在项目需求中可能遇到这种情况,要求textview时实显示checkbox选中的内容。

首先看效果图

主要讲解两个知识点。

1.listview点击checkbox选中:

  首先checkbox设置:       android:focusable="false"      android:clickable="false"  然后在代码是用一个map作记录,初始化所有选中为    false,在点击 时候设置为true;

2.textview时实显示checkbox选中的内容;

  用一个ArrayList在每次点击item的时候重新设置集合,    然后遍历集合,增加到字符串中,最后显示到textview中。

代码如下:

item.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="45dp" android:padding="5dp" android:orientation="horizontal">    <CheckBox  android:focusable="false" android:clickable="false" android:id="@+id/checkbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="10dp" />    <TextView  android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="30dp" android:text="item" android:textSize="20dp" /></LinearLayout>

主要知识点还在是代码中注释讲解。

package app.checkboxdemo;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.CheckBox;import android.widget.ListView;import android.widget.TextView;import java.util.ArrayList;import java.util.HashMap;public class MainActivity extends Activity {    private ListView listview;    private ArrayList list;    private MyAdapter adapter;    //用于记录checkbox选中的状态;    public static HashMap map;    private TextView textview;    //把选中的checkbox添加到集合中;    private ArrayList selectedItem;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listview = (ListView) findViewById(R.id.listview);        textview = (TextView) findViewById(R.id.textview);        selectedItem = new ArrayList();        initData();        initCheckBox();        adapter = new MyAdapter();        listview.setAdapter(adapter);        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                String s = "";                ViewHolder holder = (ViewHolder) view.getTag();                //toggle();设置开关。选中则再次点击为不选中。                holder.cb.toggle();                //在每次获取点击的item时将对于的checkbox状态改变,同时修改map的值。                getIsSelected().put(position, holder.cb.isChecked());                if (holder.cb.isChecked() == true) {                    System.out.println("选中" + position);                    //添加到集合中;                    selectedItem.add(list.get(position));                } else {                    System.out.println("取消选中" + position);                    //从集合中移除元素。                    selectedItem.remove(list.get(position));                }                //最后遍历集合显示在textview;                for (int i = 0; i < selectedItem.size(); i++) {                    s = s + selectedItem.get(i);                }                textview.setText(s);            }        });    }    private void initCheckBox() {        map = new HashMap();        for (int i = 0; i < list.size(); i++) {            map.put(i, false);        }    }    private void initData() {        list = new ArrayList();        for (int i = 0; i < 30; i++) {            list.add("这是item" + i);        }    }    class MyAdapter extends BaseAdapter {        @Override        public int getCount() {            return list.size();        }        @Override        public Object getItem(int position) {            return position;        }        @Override        public long getItemId(int position) {            return position;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            ViewHolder vh;            if (convertView == null) {                vh = new ViewHolder();                convertView = getLayoutInflater().inflate(R.layout.item, null);                vh.cb = (CheckBox) convertView.findViewById(R.id.checkbox);                vh.tv = (TextView) convertView.findViewById(R.id.textview);                convertView.setTag(vh);            } else {                vh = (ViewHolder) convertView.getTag();            }            vh.tv.setText(list.get(position) + "");            //得到当前map中的选中的状态;默认为没有选中;            vh.cb.setChecked(getIsSelected().get(position));            return convertView;        }    }    static final class ViewHolder {        CheckBox cb;        TextView tv;    }    public static HashMap<Integer, Boolean> getIsSelected() {        return map;    }}

更多相关文章

  1. Android小知识点收集
  2. 获取当前应用的版本号和当前android系统的版本号
  3. Android中如何在命令行中查看某个文件的内容
  4. Android直播开源项目
  5. 第一行Android代码(1)
  6. 适用于OpenGL离屏渲染上下文的初始化代码
  7. 第七章 使用Intents与Phone Dialer——上
  8. Android(安卓)Studio使用Google Flutter完整教程
  9. 开发Android第三步,签名证书,真机安装编译程序

随机推荐

  1. android 切换activity动画
  2. Android 代码实现的动画
  3. eclipse 项目导入 android studio的方式
  4. Android 通过HTTP POST 上传图片文件
  5. Android Room 数据库
  6. android抓log方法
  7. Android ToastUtils,吐司工具类
  8. 布局概述之帧布局FrameLayout和布局概述
  9. Android 中 上下文Context理解
  10. Android 获取手机本地IP