2012-01-10 3 views
0

マイページにはlistViewとOKボタンがあります。各listItemにはidとRadioButtonGroupがあります。 SimpleCursorAdapterを使用してリストを読み込みます。Android ListItem withラジオボタン

私がしたいのは、[OK]をクリックすると、そのradioButtonGroupから個々のIDとラジオボタンの選択を取得したいということです。

どうすればよいですか?

答えて

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の例を見ることができます。また、上記のコードで実装されています。

希望に役立ちます。

+0

感謝を返信するため。私はViewHolderについて読んでおり、ソリューションuを提供しようとしています。今私はボタンのクリックでgetViewを呼び出す方法別の質問がありますか? – user1128578

+0

getViewは呼び出さず、この例ではgetViewは使用しません。newView、bindViewは基本的にgetViewですが、newViewまたはリサイクルされたビューではすでに分離されています。 bindViewは常に呼び出され、newViewは新しいときだけ呼び出されます。 http://android.amberfog.com/?p=296このリンクをチェックしても役立ちます – greven

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(); 
} 
}); 
関連する問題