0

カスタム配列アダプターを使用したカスタム リスト ビューがあります。複数行の選択にリストビューを使用しています。しかし、表示されている子の行を選択し、リスト ビューを上下にスクロールすると、表示される他の子も選択されます。

@Override
    public View getView(final int position,  View convertView, ViewGroup parent) {

        LayoutInflater layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if(convertView == null)
            convertView = layoutInflater.inflate(R.layout.addbill_row,parent,false);

        initUI(convertView);

        assignValues(position);

        cbAddBillSelected.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // TODO Auto-generated method stub

                if(isChecked)
                {
                    Data.arrlstSelectedUsers.get(position).isChecked = true;



                }
                else
                {
                    Data.arrlstSelectedUsers.get(position).isChecked = false;


                }


            }
        });


        return convertView;
    }

スクリーンショットも添付。なぜこれが起こっているのかわかりません。選択したアイテムを共有設定に保存することで別の回避策がありますが、それは長い解決策です。より良い解決策を探しています。

ここに画像の説明を入力

ここに画像の説明を入力

4

3 に答える 3

0

ビルトインListViewCheckboxレイアウトを使用しないのはなぜですか? android.R.layout.simple_list_item_multiple_choiceあなたのために働くでしょう。

于 2013-09-14T12:11:08.200 に答える
0

これは、値の割り当て機能の何かです。チェックボックスも割り当てる必要があります。これが答えとして十分でない場合は、質問を変更して、値の割り当て関数コードを含めてください。修正いたします。

これは、convertView が null でない場合に発生します。使用済みのビューが表示されます。それが、このメソッドが「getView」で機能する方法です。したがって、convertView が null でない場合は、毎回すべての ui 要素を変更する必要があります。

于 2013-09-14T12:17:57.097 に答える
0

Vogella List View チュートリアルに従ったところ、魅力的に機能しました。タグの使用。

Vogella リスト ビュー

于 2013-09-14T13:16:53.257 に答える