2

以下のコードを使用してListViewアイテムを無効にしています。ここでの問題は、あるアイテムを無効にした後、ユーザーが別のアイテムをクリックすると、現在のアイテムは無効になりますが、最後のアイテムは無効から削除されます。

この問題を防ぐには?

    int pos;
    SimpleAdapter adapter = new SimpleAdapter(this, arrlist, R.layout.topicwisequestion, new String[] { "option" }, new int[] { R.id.option }) {

                public boolean isEnabled(int position) {
                    if (position != 0) {
                        if (position == pos) {
                            return false;
                        } else {
                            return true;
                        }
                    } else {
                        return true;
                    }
                }
            };

            lvTWOptions.setAdapter(adapter);

            lvTWOptions.setOnItemClickListener(new OnItemClickListener() {

                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {

                    pos = position;
                }
            });
4

1 に答える 1

1

無効なアイテムのリストを維持し、そのアイテムが isEnabled のリストに存在するかどうかを確認する必要があります。

以下のように:

ArrayList<Integer> pos=new ArrayList<Integer>();
    SimpleAdapter adapter = new SimpleAdapter(this, arrlist, R.layout.topicwisequestion, new String[] { "option" }, new int[] { R.id.option }) {

                public boolean isEnabled(int position) {
                    if (position != 0) {
                        if (pos.contains(position)) {
                            return false;
                        } else {
                            return true;
                        }
                    } else {
                        return true;
                    }
                }
            };

            lvTWOptions.setAdapter(adapter);

            lvTWOptions.setOnItemClickListener(new OnItemClickListener() {

                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {

                    pos.add(position);
                }
            });
于 2014-03-05T12:35:12.970 に答える