0

複数選択のためにチェックボックスを使用したいリストビューがあります android:choiceMode="multipleChoice"が、XML ファイルに追加すると、ボックスのチェックが適切ではありません。

ListView の行を表示するにはダブルタップし、もう一度消すにはシングルタップする必要があります。

なくても動作android:choiceMode="multipleChoice"しますが、ListView を使用できなくなります。

getCheckedItemPositions()

なぜこれが起こっているのか誰にも考えがありますか?

<ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/nameList"
        android:choiceMode="multipleChoice"
        tools:listitem="@android:layout/simple_list_item_checked"
        android:layout_centerHorizontal="true" android:layout_alignParentTop="true"
        android:layout_above="@+id/button"/>

Activity クラスのコードを次に示します。

listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, stringArray);
    playerList = (ListView)this.findViewById(R.id.nameList);
    playerList.setAdapter(listAdapter);

    //onClickListener
    playerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            CheckedTextView checkedTextView = (CheckedTextView) view;
            checkedTextView.toggle();
        }
    });

私を助けてください..事前に感謝

4

1 に答える 1

1

以下のコードで確認してください。あなたのアダプタークラスは以下のようになります。

import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView;

public class ListAdapter extends BaseAdapter {
    Context ctx;
    LayoutInflater lInflater;
    ArrayList<Position> arraylist;

    ListAdapter(Context context, ArrayList<Position> products) {
        ctx = context;
        arraylist = products;
        lInflater = (LayoutInflater) ctx
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        return arraylist.size();
    }

    @Override
    public Object getItem(int position) {
        return arraylist.get(position);
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        if (view == null) {
            view = lInflater.inflate(R.layout.item, parent, false);
        }

        Position pos = getselectedposition(position);
        ((TextView) view.findViewById(R.id.Textview1)).setText(""+pos.position);
        CheckBox chkbox = (CheckBox) view.findViewById(R.id.cbBox);
        chkbox.setOnCheckedChangeListener(myCheckChangList);
        chkbox.setTag(position);
        chkbox.setChecked(pos.ischeckedflag);
        return view;
    }

    Position getselectedposition(int position) {
        return ((Position) getItem(position));
    }

    ArrayList<Position> getcheckedposition() {
        ArrayList<Position> checkedposition = new ArrayList<Position>();
        for (Position p : arraylist) {
            if (p.ischeckedflag)
                checkedposition.add(p);
        }
        return checkedposition;
    }

    OnCheckedChangeListener myCheckChangList = new OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            getselectedposition((Integer) buttonView.getTag()).ischeckedflag = isChecked;
        }
    };
}

以下のリンクからソースをダウンロードしてください。

https://github.com/ItsRajesh4uguys/ListView_with_Checkboxes_Android

これがあなたを助けることを願っています。

于 2013-06-01T09:34:41.253 に答える