listview中CheckBox的监听回调
来源:互联网 发布:多传感器数据融合改进 编辑:程序博客网 时间:2024/05/17 09:19
调用:
public class Messages extends BaseAvtivity implements View.OnClickListener { private ListView messages; private ArrayList<messageData> list; private listAdapter_message mAdapter; private LinearLayout ll_message_delete; private TextView message_delete; private int selected_num; private int[] selected; private TitleBuilder titleBuilder; private View title01,title02; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_messages); title01 = findViewById(R.id.message_title1); title02 = findViewById(R.id.message_title2); setBar(); init(); mAdapter = new listAdapter_message(getApplicationContext(),list); messages.setAdapter(mAdapter); mAdapter.setChecked(new listAdapter_message.onChecked() { @Override public void CheckedChanged(int position,boolean isChecked) { if (isChecked){ if (selected_num < mAdapter.getCount()){ selected_num++; } selected[position] = 101; if (selected_num == mAdapter.getCount()){ titleBuilder.setRightText("全不选"); titleBuilder.setTitle("已选择"+mAdapter.getCount()+"个"); mAdapter.allcheck = true; }else { titleBuilder.setTitle("已选择"+selected_num+"个"); } }else { if (selected_num > 0){ selected_num--; } selected[position] = 0; titleBuilder.setRightText("全选"); if (selected_num == 0){ titleBuilder.setTitle("选择消息"); }else { titleBuilder.setTitle("已选择"+selected_num+"个"); } mAdapter.allcheck = false; } } }); messages.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //点击Item设置check的点击 CheckBox checkBox = (CheckBox) view.findViewById(R.id.message_checkbox); if (checkBox.isChecked()){ checkBox.setChecked(false); }else { checkBox.setChecked(true); } } }); } private void init(){ messages = (ListView) findViewById(R.id.messages_listview); ll_message_delete = (LinearLayout) findViewById(R.id.ll_message_delete); message_delete = (TextView) findViewById(R.id.message_delete); list = new ArrayList<messageData>(); list.add(new messageData("新消息1","2016/10/27 10:25:16")); list.add(new messageData("新消息2","2016/10/28 16:35:30")); list.add(new messageData("新消息3","2016/10/29 09:45:15")); list.add(new messageData("新消息4","2016/10/29 11:25:38")); selected = new int[list.size()]; message_delete.setOnClickListener(this); } public void setBar() { new TitleBuilder(title01) .setTitle("我的消息") .setLeftImage(R.drawable.back_white) .setLeftButtonOnListenner(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }) .setRightImage(R.drawable.revise) .setRightButtonOnListenner(new View.OnClickListener() { @Override public void onClick(View v) { if (mAdapter.getCount() == 0){ ToastUtils.showToast(getApplicationContext(),"无消息",Toast.LENGTH_SHORT); }else { title01.setVisibility(View.GONE); title02.setVisibility(View.VISIBLE); titleBuilder = new TitleBuilder(title02); setTitle(); ll_message_delete.setVisibility(View.VISIBLE); mAdapter.ischeck = true; mAdapter.notifyDataSetChanged(); } } }); } private void setTitle(){ titleBuilder.setViewVisibilityGONE() .setLeftText("取消") .setRightText("全选") .setTitle("选择消息") .setLeftTextOnListenner(new View.OnClickListener() { @Override public void onClick(View v) { title02.setVisibility(View.GONE); title01.setVisibility(View.VISIBLE); setBar(); fadedeltetebtn(); } }) .setRightTextOnListenner(new View.OnClickListener() { @Override public void onClick(View v) { if (mAdapter.allcheck){ titleBuilder.setRightText("全选"); titleBuilder.setTitle("选择消息"); mAdapter.allcheck = false; }else { titleBuilder.setRightText("全不选"); titleBuilder.setTitle("已选择"+mAdapter.getCount()+"个"); mAdapter.allcheck = true; } mAdapter.notifyDataSetChanged(); } }); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.message_delete: if (selected_num == 0){ ToastUtils.showToast(getApplicationContext(),"请选择",Toast.LENGTH_SHORT); break; } if (mAdapter.allcheck){ mAdapter.deleteAllItem(); }else { mAdapter.deleteItem(selected); } title02.setVisibility(View.GONE); title01.setVisibility(View.VISIBLE); setBar(); fadedeltetebtn(); break; default: break; } } private void fadedeltetebtn(){ mAdapter.ischeck = false; mAdapter.allcheck = false; ll_message_delete.setVisibility(View.GONE); selected_num = 0; for (int i = 0;i < selected.length; i++){ selected[i] = 0; } mAdapter.notifyDataSetChanged(); } @Override protected void onDestroy() { super.onDestroy(); mAdapter.ischeck = false; mAdapter.allcheck = false; ll_message_delete.setVisibility(View.GONE); mAdapter.notifyDataSetChanged(); }}
adapter:
package com.example.cuboo.mlcircles.adapter;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.CompoundButton;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import com.example.cuboo.mlcircles.DataClass.Data_Map;import com.example.cuboo.mlcircles.DataClass.messageData;import com.example.cuboo.mlcircles.R;import com.example.cuboo.mlcircles.utils.ToastUtils;import java.util.List;/** * Created by cuboo on 2016/10/21. */public class listAdapter_message extends BaseAdapter { private Context context; private List<messageData> list; public static boolean ischeck; public static boolean allcheck; private onChecked checked; public void setChecked(onChecked checked) { this.checked = checked; } public listAdapter_message(Context context, List list){ this.context = context; this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { //获得每个item messageData data_map = (messageData) list.get(position); ViewHolder viewHolder = null; if (convertView == null){ //实例化对象 convertView = LayoutInflater.from(context).inflate(R.layout.item_messages,null); viewHolder = new ViewHolder(); viewHolder.title = (TextView) convertView.findViewById(R.id.message_item_text); viewHolder.time = (TextView) convertView.findViewById(R.id.message_item_time); viewHolder.checkBox = (CheckBox) convertView.findViewById(R.id.message_checkbox); convertView.setTag(viewHolder); }else { viewHolder = (ViewHolder)convertView.getTag(); } //设置控件内容 viewHolder.title.setText(data_map.getmTitle()); viewHolder.time.setText(data_map.getmTime()); if (ischeck){ if (allcheck){ viewHolder.checkBox.setChecked(true); }else { viewHolder.checkBox.setChecked(false); } viewHolder.checkBox.setVisibility(View.VISIBLE); viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (checked != null){ //回调方法传参数 checked.CheckedChanged(position,isChecked); } } }); }else { viewHolder.checkBox.setChecked(false); viewHolder.checkBox.setVisibility(View.GONE); } return convertView; } public class ViewHolder{ TextView title; TextView time; CheckBox checkBox; } public static interface onChecked{ public void CheckedChanged(int position,boolean isChecked); } //删除单个item public void deleteItem(int[] index){ for (int i = list.size()-1; i >= 0;i--){ if (index[i] == 101){ list.remove(i); notifyDataSetChanged(); index[i] = 0; } } } //删除全部item public void deleteAllItem(){ list.clear(); notifyDataSetChanged(); }}
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_messages" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.cuboo.mlcircles.activity.Messages"> <include android:id="@+id/message_title1" layout="@layout/title_theme"/> <include android:id="@+id/message_title2" layout="@layout/title_theme" android:visibility="gone"/> <ListView android:id="@+id/messages_listview" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="16dp" android:layout_marginRight="16dp" android:layout_weight="1"> </ListView> <View android:layout_width="match_parent" android:layout_height="0.5dp" android:background="@color/gray01"/> <LinearLayout android:id="@+id/ll_message_delete" android:orientation="vertical" android:layout_gravity="bottom" android:layout_width="match_parent" android:layout_height="48dp" android:layout_marginRight="16dp" android:layout_marginLeft="16dp" android:visibility="gone"> <TextView android:id="@+id/message_delete" android:text="删除" android:layout_gravity="center" android:gravity="center" android:layout_weight="1" android:textSize="16sp" android:layout_width="wrap_content" android:layout_height="match_parent" /> </LinearLayout></LinearLayout>
xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="16dp" android:layout_marginRight="16dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="56dp" android:orientation="horizontal"> <TextView android:id="@+id/message_item_text" android:gravity="center|left" android:text="新消息。" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:textColor="@color/colorGrey"/> <TextView android:id="@+id/message_item_time" android:gravity="center|right" android:text="2016/10/28 15:26:30" android:textColor="@color/gray" android:textSize="10sp" android:layout_marginRight="16dp" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1"/> <CheckBox android:id="@+id/message_checkbox" android:layout_gravity="center" android:gravity="center" android:focusable="false" android:layout_width="24dp" android:layout_height="24dp" android:buttonTint="@color/colorGreen" android:button="@null" android:background="@drawable/checkbox_selector" android:visibility="gone"/> </LinearLayout></LinearLayout>
selector:
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:drawable="@drawable/check01"/> <item android:state_pressed="true" android:drawable="@drawable/check01"/> <item android:state_checked="true" android:drawable="@drawable/check01"/> <item android:state_checked="false" android:drawable="@drawable/check02"/></selector>
0 0
- listview中CheckBox的监听回调
- CheckBox与ListView监听问题
- 关于listview中checkbox的选中问题
- C#中ListView(CheckBox)滚动的技巧
- android listview中checkbox 的点击事件
- android ListView中CheckBox错位的解决
- 关于ListView中checkBox错乱的问题
- android listView中checkbox的使用
- Listview中嵌套Checkbox的简单解决办法
- Android中ListView嵌套CheckBox的问题
- android中listView监听中获取监听到的内容
- 自定义ListView里面条目有CheckBox 监听ListView遇到的问题
- ListView中使用CheckBox
- listview中checkbox错乱
- ListView中使用CheckBox
- ListView中使用checkBox
- listview中checkbox使用
- Listview中CheckBox全选
- 数据统计查询
- Sublime Text安装插件
- Fetching data with GET,POST methods by using NSURLConnection
- 设计模式中的撩妹神技--下篇
- 手动获取ADO连接字符串
- listview中CheckBox的监听回调
- 设计模式总结
- web.xml加载过程
- JavaScript prototyp
- 分布式Unique ID的生成方法一览
- C++ 运算符
- Android Studio中将Module转为库
- Android面试整理(一)
- bootstrap (active类)切换