2012-07-26 58 views
1

我已经创建了单选按钮自定义的ListView使用自定义适配器它的每一个行。我想以编程方式检查其父视图(列表项)被选中时的单选按钮,然后取消选中其他ListView项目内的其他RadioButton。任何人都可以提供解决方案吗?操纵单选内的ListView在Android

UPDATE

这里是我的getView()

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LinearLayout v = null; 

    final Item i = items.get(position); 

    EntryItem ei = (EntryItem) i; 
    v = (LinearLayout) vi.inflate(R.layout.list_item_entry, null); 
    final TextView title = (TextView) v 
        .findViewById(R.id.list_item_entry_title); 
    final TextView subtitle = (TextView) v 
        .findViewById(R.id.list_item_entry_summary); 


    RadioButton radioButton = new RadioButton(context); 
    radioButton.setFocusable(false); 
    radioButton.setFocusableInTouchMode(false); 
    v.addView(radioButton); 

    if (title != null) 
       title.setText(ei.title); 
    if (subtitle != null) 
       subtitle.setText(ei.subtitle); 


    convertView = v; 
    return convertView; 
} 

回答

2

要在ListView.onsetOnItemClickListener()复位单选按钮,这样做在getView方法..

listView.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     //get the radio button and check it 
        view.findViewById(); .... 
     } 
    }); 
+1

我怎样才能访问特定的ListView项里面的rdBtn? 我没有使用RadioGroup,我为每个ListView项目使用单个RadioButton 顺便说一句RadioBUtton是以编程方式创建的,在XML布局上 – 2012-07-26 07:13:10

+0

在创建单选按钮时,您可以设置一个ID ..然后执行上述操作.. – Nermeen 2012-07-26 07:19:32

+1

I用我的getView()方法更新了我的帖子 – 2012-07-26 07:22:48

4

您可以使用一个int变量,如果单个项目应选择与-1初始化;

int index =-1; 
在添加一行getView方法

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LinearLayout v = null; 

    final Item i = items.get(position); 

    EntryItem ei = (EntryItem) i; 
    v = (LinearLayout) vi.inflate(R.layout.list_item_entry, null); 
    final TextView title = (TextView) v 
        .findViewById(R.id.list_item_entry_title); 
    final TextView subtitle = (TextView) v 
        .findViewById(R.id.list_item_entry_summary); 


    RadioButton radioButton = new RadioButton(context); 
    radioButton.setFocusable(false); 
    radioButton.setFocusableInTouchMode(false); 
    radioButton.setChecked(index==position); 
    radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {      
        @Override 
        public void onCheckedChanged(CompoundButton arg0, boolean arg1) { 

        } 
       }); 
       v.addView(radioButton); 
      } 
      if (title != null) 
       title.setText(ei.title); 
      if (subtitle != null) 
       subtitle.setText(ei.subtitle); 
     } 

    convertView = v; 
    return convertView; 
} 

和在收听者OnItemClick方法,执行:

index=position; 
adapter.notifyDataSetInvalidated(); 
+0

这是正确的。你可以使用上述解决方案 – 2012-07-26 07:07:58

+0

我怎么可以访问rdBtn特定listView项内? – 2012-07-26 07:09:40

+1

我没有使用RadioGroup中,我用单单选按钮用于BTW的单选按钮被编程方式创建,而不是在XML布局 – 2012-07-26 07:10:48

1
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    style="?android:attr/spinnerDropDownItemStyle" 
    android:singleLine="true" 
    android:layout_width="match_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:ellipsize="marquee" /> 

以上代码从android.R.layout .simple_spinner_dropdown_item

它正是你想要达到的。可能这会对你有所帮助。

1

您可以在列表视图中的单击事件进行管理......在setOnClickListener事件,你可以得到Radiobutton虽然查看..然后你可以管理它