android textview时实显示checkbox选中的内容
16lz
2021-01-24
在项目需求中可能遇到这种情况,要求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; }}
更多相关文章
- Android小知识点收集
- 获取当前应用的版本号和当前android系统的版本号
- Android中如何在命令行中查看某个文件的内容
- Android直播开源项目
- 第一行Android代码(1)
- 适用于OpenGL离屏渲染上下文的初始化代码
- 第七章 使用Intents与Phone Dialer——上
- Android(安卓)Studio使用Google Flutter完整教程
- 开发Android第三步,签名证书,真机安装编译程序