安卓 使用listView,实现长按删除
结果图:
实现一个内部类 (适配器)
selectMode为bool变量 分别表示选中模式和未选中模式。
package com.example.study;import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;import java.util.ArrayList;
import java.util.Iterator;public class MainActivity extends AppCompatActivity {private Button search;private Button mBtn;private ListView mListView;private Button rank_by_name,cancel,delete;private boolean selectMode=false;int index;MyAdapter adapter;Drawable []a=new Drawable[4];ArrayList<student> students=new ArrayList<student>();public class MyListItem{public student data;public boolean checked=false;}public class MyAdapter extends BaseAdapter {Drawable selected,unselected;@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)public MyAdapter(){selected=getDrawable(R.drawable.ic_checked);unselected=getDrawable(R.drawable.ic_unchecked);}ArrayList<MyListItem> temp=new ArrayList<MyListItem>();@Overridepublic int getCount() { // 获取有多少行return temp.size();}@Overridepublic Object getItem(int position) { //获取某一行return temp.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) { // 获取某一行的显示if(convertView==null)
// textView=new TextView(MainActivity.this);convertView=getLayoutInflater().inflate(R.layout.list_view_item,parent,false);MyListItem Selected=(MyListItem)getItem(position);student data=Selected.data;TextView name=(TextView)convertView.findViewById(R.id.name);TextView age=(TextView)convertView.findViewById(R.id.age);TextView home=(TextView)convertView.findViewById(R.id.home);name.setText(data.name);age.setText(data.age);home.setText(data.home);//convertView 这个曾经忘写了 bug半小时ImageView check = (ImageView)convertView.findViewById(R.id.select_checked);if(selectMode){check.setVisibility(View.VISIBLE);}else{check.setVisibility(View.GONE);}if(Selected.checked)check.setImageDrawable(selected);elsecheck.setImageDrawable(unselected);return convertView;}}public void Select_or_Unselect(){ImageView check=(ImageView)findViewById(R.id.select_checked);
// Log.d("imageview",String.valueOf(selectMode));if(selectMode){check.setVisibility(View.VISIBLE);}else{check.setVisibility(View.GONE);}}public void showAll(){adapter.temp.clear();for(student s:students){MyListItem item=new MyListItem();item.data=s;item.checked=false;adapter.temp.add(item);}adapter.notifyDataSetChanged();}public void goSelectMode (boolean yes){// 在进入选择模式时,显示上边的操作按钮// 退出选择模式时,隐藏上边的操作按钮View layout = findViewById(R.id.select_bar);if(yes ){layout.setVisibility(View.VISIBLE); // 显示
// Select_or_Unselect();}else{layout.setVisibility(View.GONE); // 隐藏
// Select_or_Unselect();}// 列表项里要不要显示选择框this.selectMode = yes;this.adapter.notifyDataSetChanged();}public void onSelectCancel(View view){// 因为已经退出选择模式,所以把checked都置为falsefor(MyListItem item: adapter.temp){item.checked = false;}goSelectMode(false);}
// public void RankByName(){
// adapter.temp.clear();
// adapter.temp.addAll(students);
// Collections.sort(adapter.temp, new Comparator<student>() {
// @Override
// public int compare(student o1, student o2) {
// return o1.name.compareTo(o2.name);
// }
// });
// adapter.notifyDataSetChanged();
// }
// public void showFilter(View view){
// EditText edit=findViewById(R.id.ed_search);
// String filter=edit.getText().toString().trim();
// edit.clearFocus();
// hideKeyWord();
// adapter.temp.clear();
// for( student s:students){
// if(s.name.indexOf(filter)>=0){
// adapter.temp.add(s);
// }
// }
// adapter.notifyDataSetChanged();
// }
// 删除选中的项public void onSelectDelete(View view){// 使用迭代器,遍历删除多项Iterator<MyListItem> iter = adapter.temp.iterator();while(iter.hasNext()){MyListItem item = iter.next();if(item.checked){// 从listAdapter.result中删除iter.remove();// 从dataSource中删除students.remove(item.data);}}// 通知界面更新adapter.notifyDataSetChanged();}public void hideKeyWord(){InputMethodManager im=(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);im.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(),0);}@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);students.add(new student("mao","21","henan1"));students.add(new student("li","22","zhejiang"));students.add(new student("wang","23","shanghai"));students.add(new student("li 123","22","zhejiang"));students.add(new student("wang","23","shanghai"));students.add(new student("li hai","22","zhejiang"));students.add(new student("wang fang","23","shanghai"));a[0]=getDrawable(R.drawable.im01);a[1]=getDrawable(R.drawable.im02);a[2]=getDrawable(R.drawable.im03);a[3]=getDrawable(R.drawable.im04);mListView=findViewById(R.id.ListView);rank_by_name=findViewById(R.id.rank_by_name);delete=findViewById(R.id.delete_select);delete.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {onSelectDelete(v);}});cancel=findViewById(R.id.cancel);cancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {onSelectCancel(v);}});
// rank_by_name.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// RankByName();
// }
// });
// search=findViewById(R.id.search);
// search.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// showFilter(v);
//
// }
// });adapter=new MyAdapter();mListView.setAdapter(adapter);mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {MyListItem item = (MyListItem)adapter.getItem(position);if(selectMode){item.checked = ! item.checked; // 反选adapter.notifyDataSetChanged();}}});mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {@Overridepublic boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
// student s= (student) adapter.getItem(position);
// Toast.makeText(MainActivity.this,s.name+"这项被点击了",Toast.LENGTH_SHORT).show();
// goSelectMode(true);MyListItem item = (MyListItem)adapter.getItem(position);item.checked = true; // 反选goSelectMode (true);return true;}});showAll();goSelectMode (false);mBtn=findViewById(R.id.button_next);mBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {display();}});}public void ItemLongClick(int p){}public void display(){index+=1;if(index>3){index=index%4;}ImageView imageView=findViewById(R.id.imageView);imageView.setImageDrawable(a[index]);}
}
.xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><Buttonandroid:id="@+id/button_next"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="下一张" /><ImageViewandroid:id="@+id/imageView"android:layout_width="match_parent"android:layout_height="wrap_content"android:scaleType="fitCenter"app:srcCompat="@drawable/im01"tools:visibility="visible" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="50dp"><EditTextandroid:layout_width="10dp"android:id="@+id/ed_search"android:layout_weight="1"android:layout_height="match_parent"></EditText><Buttonandroid:layout_width="wrap_content"android:layout_height="match_parent"android:id="@+id/search"android:text="搜索"android:textSize="25sp"></Button></LinearLayout><Buttonandroid:id="@+id/rank_by_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="按名字排序" /><ListViewandroid:id="@+id/ListView"android:layout_width="match_parent"android:layout_weight="1"android:layout_height="0dp"></ListView><LinearLayoutandroid:layout_width="match_parent"android:layout_height="50dp"android:id="@+id/select_bar"android:orientation="horizontal"><Buttonandroid:layout_width="wrap_content"android:layout_height="match_parent"android:id="@+id/delete_select"android:layout_marginLeft="50dp"android:text="删除所选"></Button><Buttonandroid:layout_width="wrap_content"android:layout_height="match_parent"android:layout_marginLeft="150dp"android:id="@+id/cancel"android:text="取消"></Button></LinearLayout>
</LinearLayout>
<?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="match_parent"><TextViewandroid:id="@+id/name"android:layout_width="0dp"android:layout_height="48dp"android:layout_weight="1"android:gravity="center"android:text="Text"android:textSize="25sp" /><TextViewandroid:layout_width="0dp"android:layout_height="48dp"android:layout_weight="1"android:textSize="25sp"android:text="text"android:gravity="center"android:id="@+id/age"></TextView><TextViewandroid:layout_width="0dp"android:layout_height="48dp"android:id="@+id/home"android:textSize="25sp"android:text="text"android:gravity="center"android:layout_weight="1"></TextView><ImageViewandroid:layout_width="30dp"android:layout_height="48dp"android:scaleType="fitCenter"android:src="@drawable/unselected"android:id="@+id/select_checked"></ImageView>
</LinearLayout>
安卓 使用listView,实现长按删除相关推荐
- listview mysql 安卓_Android——ListView与数据库的结合
前言 ListView与数据库结合使用也是一种非常常见的手段.例如歌单的ListView,在我们重新启动应用的时候数据依旧存在,如下图: 具体实现 一.准备Activity和ListView Acti ...
- 小程序实现长按删除图片
小程序实现长按删除图片 说明 最近在学小程序,遇到长按图片删除的问题,特此记录,记录自己的成长轨迹 需求: 长按删除指定图片 需要解决的问题 长按事件如何表示出来? 如何获取当前长按元素的下标? 如何 ...
- 微信小程序 长按图片不出现菜单_微信小程序实现长按删除图片的示例
说明 最近在学小程序,遇到长按图片删除的问题,特此记录,记录自己的成长轨迹 需求: 长按删除指定图片 需要解决的问题 长按事件如何表示出来? 如何获取当前长按元素的下标? 如何删除元素? 解决办法 长 ...
- 安卓手机里的短信删除了如何恢复
安卓手机里的短信删除了如何恢复?生活中人们已经对手机产生很大的依赖,当然手机里也拥有这很多个人信息以及隐私,虽然现在很多时候大家聊天都会使用微信或者QQ,但是也有些重要的事情会发短信,如果不小心把短信 ...
- iOS模拟键盘长按删除
最近做第三方键盘开发,模拟键盘的长按删除 删除按钮上添加长按事件: UILongPressGestureRecognizer *longPress = [[UILongPressGestureReco ...
- 微信小程序上传图片、长按删除及预览图片
也是电商里做的上传评论图片之类的,如果用根据我文章中需要改的改一下就可以用了 首先是wxml <view class="conts"><view class=&q ...
- 14、微信小程序——上传、预览、长按删除图片
1.上传多图 多图上传的关键在于--渲染 Page({data:{images:[]},upload(){wx.chooseImage({count:9, //获取图片数量sizeType: ['or ...
- win10删除文件提示源文件路经太长无法删除解决办法
在win10下文件名过长或路经太长,删除时无法删除,在网上找了很多方法,都没办法删除,偶然在一篇博客中发现通过压缩文件删除源文件的方法真可以删除.这方法得记下来
- Android 用HorizontalScrollView实现ListView的Item滑动删除 ,滑动错乱 冲突
用HorizontalScrollView实现类似微信的滑动删除 测试于:Android2.2+ 对于Android来说按键操作已经在减少,越来越多的手势操作层出不穷,今天介绍一款LIstView的I ...
- 安卓恢复大师怎样恢复手机删除的照片
互盾安卓恢复大师(简称:安卓恢复大师)估计大家应该都使用过,此软件的功能非常丰富,今天我们就使用该软件来给大家分析下怎样恢复手机删除的照片. 1.首先安装好我们下面需要使用到的互盾安卓恢复大师(苹果手 ...
最新文章
- opencv多线程显示的问题和解决方法
- SSM项目搭建之配置文件
- Ruby 基础教程1-6
- IDEA中Git的更新、提交、还原方法
- Interllij IDEA 搭建Springboot(一)
- 智能灯控制页面用HTML编写,智能家居系统中智能化灯光控制的设计实现
- codevs3143 二叉树的序遍历
- mysql 正则 捕获_在mysql中模拟正则表达式捕获组
- html打印成功回调,web前端打印实现
- 互联⽹名词⼤全——商业模式篇
- ubuntu通过命令行清除内存
- JspStudy环境下tomcat服务器无法正确运行servlet的一种解决方法
- 计算机里只剩c盘了,家里电脑上突然只剩下C盘,怎么处理
- c语言数组五种排序法:bubble,choise,quick,insert,shell 和js 数组排序sort的区别
- 卡片跳转快应用指定页面,如何点返回直接退出快应用回到卡片
- 转载 测试开发岗--高频知识整理
- 90952-27-5,Thiol-PEG4-alcohol含有羟基和巯基的交联剂
- 人工智能一路狂飙现隐忧 过高预期恐催泡沫
- 【BZOJ 1305】[CQOI2009]dance跳舞
- 关于global_step参数