广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    Android在listview添加checkbox实现原理与代码

    2018-04-04 08:34:50 次阅读 稿源:互联网
    广告

    主界面CheckBoxinListViewActivity.java代码如下
    代码如下:

    public class CheckBoxinListViewActivity extends Activity {
    /** Called when the activity is first created. */
    private MyAdapter adapter;
    private ListView listview;
    private Button checkAll;
    private Button noCheckAll;
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    listview = (ListView)findViewById(R.id.listview);
    checkAll = (Button)findViewById(R.id.button1);
    noCheckAll = (Button)findViewById(R.id.button2);
    adapter = new MyAdapter();
    listview.setAdapter(adapter);
    checkAll.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
    adapter.checkAll();
    }
    });
    noCheckAll.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
    adapter.noCheckAll();
    }
    });
    }
    private class MyAdapter extends BaseAdapter{
    private ArrayList<Message> list= new ArrayList<Message>();
    public MyAdapter(){
    for(int i = 1 ;i<=100 ; i++){
    list.add(new Message("item_"+i));
    }
    }
    public void checkAll(){
    for(Message msg:list){
    msg.isCheck = true;
    }
    notifyDataSetChanged();
    }
    public void noCheckAll(){
    for(Message msg:list){
    msg.isCheck = false;
    }
    notifyDataSetChanged();
    }
    @Override
    public int getCount() {
    return list.size();
    }
    @Override
    public Object getItem(int position) {
    return null;
    }
    @Override
    public long getItemId(int position) {
    return 0;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder viewHolder;
    if(convertView == null){
    LayoutInflater inflater = LayoutInflater.from(CheckBoxinListViewActivity.this);
    convertView = inflater.inflate(R.layout.listview_item, null);
    viewHolder = new ViewHolder();
    viewHolder.checkBox = (CheckBox)convertView.findViewById(R.id.checkBox1);
    convertView.setTag(viewHolder);
    }else{
    viewHolder = (ViewHolder)convertView.getTag();
    }
    final Message msg = list.get(position);
    viewHolder.checkBox.setText(msg.str);
    viewHolder.checkBox.setChecked(msg.isCheck);
    //注意这里设置的不是onCheckedChangListener,还是值得思考一下的
    viewHolder.checkBox.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
    if(msg.isCheck){
    msg.isCheck = false;
    }else{
    msg.isCheck = true;
    }
    }
    });
    return convertView;
    }
    }
    private class ViewHolder{
    CheckBox checkBox;
    }
    }

    适配器所适配的消息Message.java如下:
    代码如下:

    public class Message {
    public boolean isCheck;
    public String str;
    public Message(String str){
    this.str = str;
    }
    }

    main.xml代码如下:
    代码如下:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <Button android:text="全选" android:id="@+id/button1"
    android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
    <Button android:text="撤消" android:id="@+id/button2"
    android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
    </LinearLayout>
    <ListView android:id="@+id/listview" android:layout_height="fill_parent"
    android:layout_width="fill_parent" />
    </LinearLayout>

    listview_item.xml代码如下:
    代码如下:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:descendantFocusability="blocksDescendants"
    >
    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center">
    <CheckBox
    android:text="CheckBox"
    android:id="@+id/checkBox1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
    </LinearLayout>
    </LinearLayout>

    神的世界你不懂,虫哥的生活你没有,只有程序猿的世界大家才知道。程序猿们,为了自己的精彩世界奋斗吧,努力吧!加油……

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告