当前位置: 代码迷 >> Android >> 大侠们请进,关于ListView中RadioButton单选有关问题
  详细解决方案

大侠们请进,关于ListView中RadioButton单选有关问题

热度:71   发布时间:2016-05-01 22:19:29.0
大侠们请进,关于ListView中RadioButton单选问题。
如何实现 ListView 中 RadioButton 单选 ?
我知道系统自带了个 simple_list_item_single_choice.xml , 但是这个功能不够用。所以就自定义了布局。
我的 main.xml
<RadioGroup
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <ListView

  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:id="@+id/pim_account_setting_listview" />
</RadioGroup>

listview_item.xml

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="horizontal"
  android:descendantFocusability="blocksDescendants"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <TextView
  android:id="@+id/pim_account_setting_textview_item"
  android:textColor="@color/text_default"
  android:gravity="center_vertical"
  android:layout_marginLeft="10dp"
  android:textSize="20dp"
  android:layout_height="40dp"
  android:layout_width="0dp"
  android:layout_weight="8" />
  <RadioButton
  android:id="@+id/pim_account_setting_radiobutton_item"
  android:gravity="center_vertical"
  android:layout_gravity="center_horizontal"
  android:layout_height="40dp"
  android:layout_width="0dp"
  android:layout_weight="1" />

   
</LinearLayout>


适配器是自定义的  


  private class AccountAdapter extends BaseAdapter {

  private LayoutInflater mInflater;
   
  public AccountAdapter(Context context) {
  mInflater = LayoutInflater.from(context);
  }

  @Override
  public int getCount() {
  return mListItem.size();
  }

  @Override
  public Object getItem(int position) {
  return position;
  }

  @Override
  public long getItemId(int position) {
  return position;
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
  ViewHolder holder;

  if (convertView == null) {
  convertView = mInflater.inflate(R.layout.account_setting_item, null);

  holder = new ViewHolder();
  holder.mTextView = (TextView) convertView.findViewById(R.id.pim_account_setting_textview_item);
  holder.mRadioButton = (RadioButton) convertView.findViewById(R.id.pim_account_setting_radiobutton_item);

  convertView.setTag(holder);
  } else {
  holder = (ViewHolder) convertView.getTag();
  }

  holder.mTextView.setText((String)mListItem.get(position).get("text"));
  holder.mRadioButton.setChecked((Boolean)mListItem.get(position).get("choice"));
  holder.position = position;
  return convertView;
  }
   
   
   
  class ViewHolder {
  相关解决方案