내 페이지에 listView와 OK 버튼이 있습니다. 각 listItem에는 id와 RadioButtonGroup이 있습니다. SimpleCursorAdapter를 사용하여 목록을로드하고 있습니다.Android ListItem with radio button
내가 뭘하고 싶은지 확인을 클릭하면 해당 radioButtonGroup에서 개별 id 및 라디오 단추 선택을 얻고 싶습니다.
어떻게해야합니까?
내 페이지에 listView와 OK 버튼이 있습니다. 각 listItem에는 id와 RadioButtonGroup이 있습니다. SimpleCursorAdapter를 사용하여 목록을로드하고 있습니다.Android ListItem with radio button
내가 뭘하고 싶은지 확인을 클릭하면 해당 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