在ListView
的每一行中,我有RadioGroup
RadioButton
s。
从数据库中我得到五行,当我检查第一行中的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);
}
}
答案 0 :(得分:2)
gridview和listview中的复选框和单选按钮存在一些问题,在你的适配器中这样做,声明一个arraylist来保持你的radiobuttons的检查位置
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));
答案 1 :(得分:0)
以这种方式使用开关机制:
switch(oper) {
case 1:
if (checked)
RightRadio.setChecked(true);
break;
case 2:
if (checked)
DownRadio.setChecked(true);
break;
}
}
有关详细说明和解释,请参阅:Radio buttons