내 문제 : 나는 사용자 정의 ArrayAdapter와 가진 목록보기 있습니다사용자 정의 ArrayAdapter 안에 CHOICE_MODE_MULTIPLE_MODAL에서 항목이 선택되어 있는지 확인하는 방법은 무엇입니까?
onCreate()
나의 목록 :
list = /*some list*/
listView = (ListView) findViewById(R.id.some_list);
listView.setAdapter(new MapListAdapter(this, R.layout.custom_list_item, list));
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
listView.setItemChecked(position, true);
}
});
mapListView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
@Override
public boolean onPrepareActionMode(...) {
// some unrelated working code
}
@Override
public void onDestroyActionMode(...) {
// some unrelated working code
}
@Override
public boolean onCreateActionMode(...) {
// some unrelated working code
}
@Override
public boolean onActionItemClicked(...) {
// some unrelated working code
}
@Override
public void onItemCheckedStateChanged(...) {
// some unrelated working code
}
});
내 사용자 정의 ArrayAdapter와의
getView(...)
:
@Override
public View getView (int position, View view, ViewGroup parent) {
view = (LinearLayout) inflater.inflate(layoutId, null);
final ListItem entry = getItem(position);
// setting some textviews here and so on...
CheckBox checkBox = (CheckBox) view.findViewById(R.id.m_l_i_checkbox);
// my problem^
return view;
}
내가 아는 어떤 목록 항목이 내가 선택하면 ActionMode 막대가 나타나고 모든 항목을 선택 취소 (토글)하면 사라집니다. 그러나 실제로 선택한 경우 나타낼 수있는 확인란을 갖고 싶습니다. 그러면 어떻게해야합니까? android.R.single_list_item_multiple_choice 및 기본 ArrayAdapter를 사용하면 잘 작동하지만 사용자 정의 배열을 사용하고 싶습니다. 어쩌면 내가 뭔가 잘못되어 가고 있고 또 다른 방법이있을 수 있습니까?
이것은 내가 생각해 낸 것과 정확히 같은 해결책입니다.하지만 문제는이 경우 작업 모드를 작동시키기 위해 항목 목록을 반복하여 검사해야하는 항목의 수를 확인해야합니다 (1 또는 그 이상 - 행동 모드를 시작하지 않으면 - 끝내십시오.) 그리고 많은 목록을 나열하면 모든 클릭에이 작업을 수행하는 속도가 느려지고 이미 구현되었지만 잘 문서화되지 않은 내용을 작성하는 것은 매우 짜증나게됩니다. 어떤 것인가?) –
당신은이 부분에 특히주의해야합니다. 그러나이 특별한 경우에는 목록 반복이 일부 Java 컬렉션 클래스를 확장하지 않으면 가장 효율적인 방법입니다. 내부 메커니즘 인 안드로이드에서도 선택한 항목을 가져 오기 위해 어느 시점에서 목록을 반복해야하므로 속도에 대해 걱정할 경우 목록 크기를 작게 유지하려고합니다 (아마도 필터링이나 게으른 로딩 등). 나는 이것이 고통 인 것을 안다. 그러나 그것은 android를 위해 만들어졌다 :-) – Christos