web-dev-qa-db-ja.com

Androidチェックボックスおよびすべてのクリック可能なリストビュー

可能性のある複製:
Android:データベースからListViewのCheckBoxにデータをバインドしますか?

次のレイアウトを持つアイテムでリストビューを使用したい

------------------------- 
 [CB]    TV            TV
-------------------------

CBはチェックボックスで、TVはTextviewです。

リストビューでクリック可能なアイテムを使用できないことをどこかで読みました。いくつかある場合は、ListItemsをクリックすることはできません。しかし、GoogleMailアプリを見ると、これは可能です。チェックボックスで複数のメッセージにマークを付けて(そしてそれらのアクションを選択できます)、ListItemをクリック(またはdpadでスクロール)して別の画面に移動できます。誰かがこれを可能にするコード/例を持っていますか?

53
codie4711

XMLレイアウトでCheckBoxfocusable="false"として設定します。それ以外の場合は、リストビューからクリックイベントを盗みます。

もちろん、これを行う場合、CheckBoxの代わりにリスト項目がクリックされた場合、CheckBoxをチェック済み/未チェックとして手動でマークする必要がありますが、とにかくそれが必要です。

101
PacificSky

リストビューアダプタを「simple_list_item_multiple_choice」に設定します

ArrayAdapter<String> adapter;

List<String> values; // put values in this

//Put in listview
adapter = new ArrayAdapter<UserProfile>(
this,
Android.R.layout.simple_list_item_multiple_choice, 
values);
setListAdapter(adapter);    
19
Erik Bergstedt
holder.checkbox.setTag(row_id);

そして

holder.checkbox.setOnClickListener( new OnClickListener() {

                @Override
                public void onClick(View v) {
                    CheckBox c = (CheckBox) v;

                    int row_id = (Integer) v.getTag();

                    checkboxes.put(row_id, c.isChecked());


                }
        });
9
max4ever

このコードは私のプロジェクトで動作し、リストビュー項目とチェックボックスを選択できます

<?xml version="1.0" encoding="utf-8"?>
<!-- Single List Item Design -->
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:clickable="true" >

    <TextView
        Android:id="@+id/label"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_weight="4" />

    <CheckBox
        Android:id="@+id/check"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:focusable="false"
        Android:text="" >
    </CheckBox>

</LinearLayout>
7
Borja

以下のコードが役立ちます:

public class DeckListAdapter extends BaseAdapter{

      private LayoutInflater mInflater;
        ArrayList<String> teams=new ArrayList<String>();
        ArrayList<Integer> teamcolor=new ArrayList<Integer>();


        public DeckListAdapter(Context context) {
            // Cache the LayoutInflate to avoid asking for a new one each time.
            mInflater = LayoutInflater.from(context);

            teams.add("Upload");
            teams.add("Download");
            teams.add("Device Browser");
            teams.add("FTP Browser");
            teams.add("Options");

            teamcolor.add(Color.WHITE);
            teamcolor.add(Color.LTGRAY);
            teamcolor.add(Color.WHITE);
            teamcolor.add(Color.LTGRAY);
            teamcolor.add(Color.WHITE);


        }



        public int getCount() {
            return teams.size();
        }


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


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

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


            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.decklist, null);

                holder = new ViewHolder();
                holder.icon = (ImageView) convertView.findViewById(R.id.deckarrow);
                holder.text = (TextView) convertView.findViewById(R.id.textname);

             .......here you can use holder.text.setonclicklistner(new View.onclick.

                        for each textview


                System.out.println(holder.text.getText().toString());

                convertView.setTag(holder);
            } else {

                holder = (ViewHolder) convertView.getTag();
            }



             holder.text.setText(teams.get(position));

             if(position<teamcolor.size())
             holder.text.setBackgroundColor(teamcolor.get(position));

             holder.icon.setImageResource(R.drawable.arraocha);







            return convertView;
        }

        class ViewHolder {
            ImageView icon;
            TextView text;



        }
}

お役に立てれば。

5
Udaykiran