マイページにはlistViewとOKボタンがあります。各listItemにはidとRadioButtonGroupがあります。 SimpleCursorAdapterを使用してリストを読み込みます。Android ListItem withラジオボタン
私がしたいのは、[OK]をクリックすると、そのradioButtonGroupから個々のIDとラジオボタンの選択を取得したいということです。
どうすればよいですか?
マイページにはlistViewとOKボタンがあります。各listItemにはidとRadioButtonGroupがあります。 SimpleCursorAdapterを使用してリストを読み込みます。Android ListItem withラジオボタン
私がしたいのは、[OK]をクリックすると、そのradioButtonGroupから個々のIDとラジオボタンの選択を取得したいということです。
どうすればよいですか?
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の例を見ることができます。また、上記のコードで実装されています。
希望に役立ちます。
あなたはあなたのリストに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();
}
});
感謝を返信するため。私はViewHolderについて読んでおり、ソリューションuを提供しようとしています。今私はボタンのクリックでgetViewを呼び出す方法別の質問がありますか? – user1128578
getViewは呼び出さず、この例ではgetViewは使用しません。newView、bindViewは基本的にgetViewですが、newViewまたはリサイクルされたビューではすでに分離されています。 bindViewは常に呼び出され、newViewは新しいときだけ呼び出されます。 http://android.amberfog.com/?p=296このリンクをチェックしても役立ちます – greven