在我的 ListView
的每一行中,我都有一个带有 RadioButton
的 RadioGroup
。
我从数据库中得到五行,当我检查第一行中的 RadioButtons 然后滚动时,我看到第三行也被检查了(在屏幕上,而不是数据库)。
当我检查第二行的 RadioButtons 时,第四行也会被检查。
屏幕放置了 1,5 行。
public void bindView(View view, Context _context, Cursor _cursor) {
String id=_cursor.getString(_cursor.getColumnIndex("_id"));
RadioButton RightRadio=(RadioButton)view.findViewById(R.id.RightRadio);
RightRadio.setOnClickListener(radioListener);
RightRadio.setTag(id);
RadioButton LeftRadio=(RadioButton)view.findViewById(R.id.LeftRadio);
LeftRadio.setOnClickListener(radioListener);
LeftRadio.setTag(id);
RadioButton UpRadio=(RadioButton)view.findViewById(R.id.UpRadio);
UpRadio.setOnClickListener(radioListener);
UpRadio.setTag(id);
RadioButton DownRadio=(RadioButton)view.findViewById(R.id.DownRadio);
DownRadio.setOnClickListener(radioListener);
DownRadio.setTag(id);
int oper=getOperByid(id);
switch (oper) {
case 1:
RightRadio.setChecked(true);
break;
case 3:
LeftRadio.setChecked(true);
break;
case 4:
UpRadio.setChecked(true);
break;
case 2:
DownRadio.setChecked(true);
break;
}
if (portrait) {
LeftRadio.setVisibility(View.GONE);
RightRadio.setVisibility(View.GONE);
UpRadio.setVisibility(View.VISIBLE);
DownRadio.setVisibility(View.VISIBLE);
} else {
UpRadio.setVisibility(View.GONE);
DownRadio.setVisibility(View.GONE);
LeftRadio.setVisibility(View.VISIBLE);
RightRadio.setVisibility(View.VISIBLE);
}
}
最佳答案
gridview 和listview 中的checkboxes 和radiobuttons 有一些问题,在你的adapter 中这样做,声明一个arraylist 来保存你的radiobuttons 的checked 位置
private ArrayList<Boolean> itemChecked = new ArrayList<Boolean>();
在适配器构造函数中:-
public YourAdapter(Context context, ArrayList<String> mlist)
{
......your other intializations;
for (int i = 0; i < this.getCount(); i++)
{
itemChecked.add(i, false/true);
}
}
根据位置的值初始化为 false 或 true,并在 bindview 方法中获取值:-
radiobutton.setChecked(itemChecked.get(position));
关于android - 当我使用自定义 SimpleCursorAdapter 在 ListView 的一行中检查 RadioButton 时,另一行也被检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24967356/