0

ListViewチェックされている項目を削除しようとしています。チェックされた項目が 1 つだけの場合は機能しますが、2 つまたは 3 つある場合はアプリが強制終了します。エラーログには次のように書かれています:

E/AndroidRuntime(2173): java.lang.IndexOutOfBoundsException: 無効な場所 2、サイズは 2

リストに 3 つのアイテムがあり、2 を削除する場合。このエラーの修正を手伝ってくれる人はいますか? コードは次のとおりです。

    public void delete() {
    btnDelete = (Button) findViewById(R.id.btnDelete);
    btnDelete.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            for (int i = 0; i < list.getChildCount(); i++) {
                View view = list.getChildAt(i);

                 CheckedTextView cv = (CheckedTextView) view.findViewById(R.id.checkList);
                 if(cv.isChecked()){
                    Log.i("DELETE", adapter.getItem(i).toString()+"   "+cv.toString());

                     adapter.remove(adapter.getItem(i));
                 }
                 adapter.notifyDataSetChanged();

            }
           Toast.makeText(getApplicationContext(), "Selected Items Cleared", Toast.LENGTH_SHORT).show();
       }
    });
   }
4

1 に答える 1

2

問題は for ループにあります。forループでリストビューを繰り返していますが、list.getChildCount()これは正しくありません.Apiドキュメントを正しく読んで、それを置き換えてadapter.getCount();問題を解決してください。

于 2012-05-02T18:34:34.703 に答える