我的页面有一个listView和一个OK按钮。每个listItem都有一个id和RadioButtonGroup。 我正在使用SimpleCursorAdapter来加载列表。
我想要做的是当我点击确定时,我想从该radioButtonGroup中选择个人ID和单选按钮。
我该怎么办?
答案 0 :(得分:0)
您必须扩展SimpleCursorAdapter类,并在newView / bindView方法中检查radioButtonGroup的状态。为此,您需要使用OnCheckedChangedListener为单选按钮组设置一个侦听器。我有一些我在个人应用程序上使用的源代码示例。请记住我正在听复选框,但应该完全直接适应单选按钮组。
@Override
public void bindView(View view, Context context, Cursor cursor) {
NoteHolder holder = (NoteHolder) view.getTag();
holder.titleView.setText(cursor.getString(titleColIndex));
holder.modifiedView.setText(mUtils.formatDate(mUtils.formatDateFromString (cursor.getString(modifiedColIndex), context, "dd-MM-yyyy"), "dd-MM-yyyy"));
holder.priorityView.setImageResource(mUtils.getPriorityResourceId(cursor.getInt(priorityColIndex)));
Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/ARLRDBD.TTF");
holder.titleView.setTypeface(tf);
holder.modifiedView.setTypeface(tf);
final int pos = cursor.getPosition();
final long id = cursor.getLong(idColIndex);
holder.checkbox.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
checkChecked(v, pos, id);
}
});
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
rowCheckChecked(v, pos, id);
}
});
holder.checkbox.setChecked(itemChecked.get(pos));
}
private static class NoteHolder {
TextView titleView;
TextView modifiedView;
ImageView priorityView;
CheckBox checkbox;
}
private void checkChecked(View v, int pos, long id){
CheckBox cb = (CheckBox) v.findViewById(R.id.delete_checkbox);
if (cb.isChecked())
{
itemChecked.set(pos, true);
mSelectedIDs.add(id);
}
else if(!cb.isChecked())
{
itemChecked.set(pos, false);
if(mSelectedIDs.contains(id))
mSelectedIDs.remove(id);
}
}
我建议你也使用viewHolder模式。特别是如果您的应用程序将包含许多列表项。您可以阅读有关它的更多信息here并查看示例here,您也可以在我上面的代码中看到它实现。
希望有所帮助。
答案 1 :(得分:0)
您可以在列表中添加clicklistener:
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
RadioButton button = (RadioButton) view.findViewById(R.id.RadioButton);
button.getId();
}
});