アンドロイドのlistviewのチェック項目を削除するものはありません

I am trying to deleted checked item in listview in android, but I haven't achive this, why? my code is below. please response . I have try this code as well , which has not get more idea. How to delete check box items from list

リスト項目フォームのリストビューを削除するための多くの方法があります。

public class BookmarksJokes extends Activity implements OnClickListener,
    OnItemClickListener {
ListView lv;
static ArrayList checks=new ArrayList();
static String[] tempTitle = new String[100];
static String[] tempBody = new String[100];
static String[] pos = new String[100];
private static class EfficientAdapter extends BaseAdapter {
    private LayoutInflater mInflater;
    public EfficientAdapter(Context context) {
        mInflater = LayoutInflater.from(context);

    }

    public int getCount() {
        return tempTitle.length;
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(final int position, View convertView, ViewGroup parent) {
         ViewHolder holder;

        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.bookmarks_list_item,
                    null);
            holder = new ViewHolder();

            holder.text1 = (TextView) convertView
                    .findViewById(R.id.titleJok);
            holder.text2 = (TextView) convertView
                    .findViewById(R.id.bodyJok);
            holder.checkBox = (CheckBox) convertView.findViewById(R.id.checkbox);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

           holder.checkBox.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                if(((CheckBox)v).isChecked()){
                  checks.set(position, 1);
                }
                else{
                 checks.set(position, 0);
                }

            }
        });
        holder.text1.setText(tempTitle[position]);
        holder.text2.setText(tempBody[position]);

        return convertView;
    }
     class ViewHolder {
        TextView text1;
        TextView text2;
        CheckBox checkBox;


    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.bokmarksjoks);

    try {
        db = (new DatabaseHelper(this)).getWritableDatabase();
    } catch (IOException e) {
        e.printStackTrace();
    }
    setUpViews();

    for(int b=0;b>"+i);
                                            checks.remove(i);
                                           //i--;
                                            Log.d(TAG, "checked Value >>"+checks);
                                            Log.d(TAG, "i  Value -- >>"+i);
                                         }
                                     }
                                    ((EfficientAdapter)lv.getAdapter()).notifyDataSetChanged();
                                  }
                            })
                .setNegativeButton("No",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                dialog.cancel();
                            }
                        });
        AlertDialog alert = alt_bld.create();
        alert.setTitle("Delete Jokes");
        alert.show();
    case R.id.checkbox:

    default:
        break;
    }

}

このコードをエラーなしで更新してください。または、これを最善の考えをしてください。

1

2 答え

あなたがチェック項目を削除したいが、リストのデータソースを変更しない場合は、チェックリストからデータソースをロードしてください。以下のように:

public class BookmarksJokes extends Activity implements OnClickListener,
    OnItemClickListener {
ListView lv;
static ArrayList checks=new ArrayList();
static ArrayList tempTitle = new String[100];
static ArrayList tempBody = new String[100];
static String[] pos = new String[100];
private static class EfficientAdapter extends BaseAdapter {
    private LayoutInflater mInflater;
    public EfficientAdapter(Context context) {
        mInflater = LayoutInflater.from(context);

    }

    public int getCount() {
        return tempTitle.length;
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(final int position, View convertView, ViewGroup parent) {
         ViewHolder holder;

        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.bookmarks_list_item,
                    null);
            holder = new ViewHolder();

            holder.text1 = (TextView) convertView
                    .findViewById(R.id.titleJok);
            holder.text2 = (TextView) convertView
                    .findViewById(R.id.bodyJok);
            holder.checkBox = (CheckBox) convertView.findViewById(R.id.checkbox);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

           holder.checkBox.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                if(((CheckBox)v).isChecked()){
                  checks.set(position, 1);
                }
                else{
                 checks.set(position, 0);
                }

            }
        });
        holder.text1.setText(tempTitle.get(position));
        holder.text2.setText(tempBody.get(position));

        return convertView;
    }
     class ViewHolder {
        TextView text1;
        TextView text2;
        CheckBox checkBox;


    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.bokmarksjoks);

    try {
        db = (new DatabaseHelper(this)).getWritableDatabase();
    } catch (IOException e) {
        e.printStackTrace();
    }
    setUpViews();

    for(int b=0;b>"+i);
                                            checks.remove(i);
                                            tempTitle.remove(i);
                                            tempBody.remove(i);
                                           //i--;
                                            Log.d(TAG, "checked Value >>"+checks);
                                            Log.d(TAG, "i  Value -- >>"+i);
                                         }
                                     }
                                    ((EfficientAdapter)lv.getAdapter()).notifyDataSetChanged();
                                  }
                            })
                .setNegativeButton("No",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                dialog.cancel();
                            }
                        });
        AlertDialog alert = alt_bld.create();
        alert.setTitle("Delete Jokes");
        alert.show();
    case R.id.checkbox:

    default:
        break;
    }

}
0
追加された
実際には、そのid、私は、私はコードをコンパイルしていないので、まだエラーがあるかもしれません。
追加された 著者 jeet,
私は "" "check"と "holder.text1.setText"(チェック[位置])に直面しています; holder.text2.setText(チェック[位置]); "" "これはエラーです>>。配列型でなければならないが、ArrayList
追加された 著者 user954032,
ここで、temp.remove(position);この行で、あなたはあなたがこれを宣言している位置を通過しました。このIDですか?私はイドを試しても、うまく仕事に気づいた。
追加された 著者 user954032,
あなたのコードによれば、いくつかは変更されていますが、動作しません>>> List temp = Arrays.asList(tempTitle); temp.remove(pos); tempTitle =(String [])temp.toArray(); temp = Arrays.asList(tempBody); temp.remove(pos); tempBody =(String [])temp.toArray(); Posはすでにそれを参照して宣言されています。
追加された 著者 user954032,

トラバース中にリストから項目を削除しています。少なくとも、カウンタ変数とリストサイズで削除された項目を考慮する必要があります(元のコードにはi--がありますが、コメントアウトしています)。

私。インデックス2のアイテムを削除した後、リストの次のアイテムは3でなく2です。

コメントを解除すると、それを修正する必要があります。

0
追加された
私はこれをコメントアウトしようとしています - 、しかし、私はまだチェックし、削除ボタンをクリックして、リストから項目を削除できませんでした
追加された 著者 user954032,