Android之記錄ListView的checkbox選擇位置問題

來源:互聯網
上載者:User

直接上代碼了:

<CheckBox         android:id="@+id/checkbox"        android:focusable="false" // 必須有        android:clickable="false"  // 必須有        android:layout_marginLeft="20dp"        android:layout_width="wrap_content"        android:layout_height="wrap_content"/>

 

public class ListViewCheckBoxActivity extends Activity {    private ListView listview;        @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                listview = (ListView) findViewById(R.id.listview);        MyAdapter adapter=new MyAdapter(this);            listview.setAdapter(adapter);            listview.setItemsCanFocus(false);            listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);            listview.setOnItemClickListener(new OnItemClickListener(){                @Override            public void onItemClick(AdapterView<?> parent, View view,                    int position, long id) {                // TODO Auto-generated method stub                System.out.println("aa");                ViewHolder vHollder = (ViewHolder) view.getTag();                    //在每次擷取點擊的item時將對於的checkbox狀態改變,同時修改map的值。                    vHollder.cBox.setChecked(true);                boolean check = vHollder.cBox.isChecked();                MyAdapter.isSelected.put(position, check);             }            });      }}

 

package com.lee0000.ListViewCheckBox;import java.util.ArrayList;    import java.util.HashMap;    import java.util.List;    import java.util.Map;        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.ImageView;    import android.widget.TextView;        public class MyAdapter extends BaseAdapter {        private LayoutInflater mInflater;        private List<Map<String, Object>> mData;        public static Map<Integer, Boolean> isSelected;        public MyAdapter(Context context) {            mInflater = LayoutInflater.from(context);            init();        }            //初始化        private void init() {            mData=new ArrayList<Map<String, Object>>();            for (int i = 0; i < 25; i++) {                Map<String, Object> map = new HashMap<String, Object>();                map.put("title", "第" + (i + 1) + "行的標題");                mData.add(map);            }                    //這兒定義isSelected這個map是記錄每個listitem的狀態,初始狀態全部為false。            isSelected = new HashMap<Integer, Boolean>();            for (int i = 0; i < mData.size(); i++) {                isSelected.put(i, false);            }        }            @Override        public int getCount() {            return mData.size();        }            @Override        public Object getItem(int position) {            return mData.get(position);        }            @Override        public long getItemId(int position) {            return position;        }            @Override        public View getView(int position, View convertView, ViewGroup parent) {            ViewHolder holder = null;            //convertView為null的時候初始化convertView。            if (convertView == null) {                holder = new ViewHolder();                convertView = mInflater.inflate(R.layout.listviewcontent, null);                holder.title = (TextView) convertView.findViewById(R.id.text);                holder.cBox = (CheckBox) convertView.findViewById(R.id.checkbox);                convertView.setTag(holder);            } else {                holder = (ViewHolder) convertView.getTag();            }                     holder.title.setText(mData.get(position).get("title").toString());            holder.cBox.setChecked(isSelected.get(position));            return convertView;        }            public class ViewHolder {            public TextView title;            public CheckBox cBox;        }    }    

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.