带有单选按钮的Android ListItem

时间:2012-01-10 15:21:48

标签: android

我的页面有一个listView和一个OK按钮。每个listItem都有一个id和RadioButtonGroup。 我正在使用SimpleCursorAdapter来加载列表。

我想要做的是当我点击确定时,我想从该radioButtonGroup中选择个人ID和单选按钮。

我该怎么办?

2 个答案:

答案 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();
}
});