结果图:

实现一个内部类 (适配器)

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,实现长按删除相关推荐

  1. listview mysql 安卓_Android——ListView与数据库的结合

    前言 ListView与数据库结合使用也是一种非常常见的手段.例如歌单的ListView,在我们重新启动应用的时候数据依旧存在,如下图: 具体实现 一.准备Activity和ListView Acti ...

  2. 小程序实现长按删除图片

    小程序实现长按删除图片 说明 最近在学小程序,遇到长按图片删除的问题,特此记录,记录自己的成长轨迹 需求: 长按删除指定图片 需要解决的问题 长按事件如何表示出来? 如何获取当前长按元素的下标? 如何 ...

  3. 微信小程序 长按图片不出现菜单_微信小程序实现长按删除图片的示例

    说明 最近在学小程序,遇到长按图片删除的问题,特此记录,记录自己的成长轨迹 需求: 长按删除指定图片 需要解决的问题 长按事件如何表示出来? 如何获取当前长按元素的下标? 如何删除元素? 解决办法 长 ...

  4. 安卓手机里的短信删除了如何恢复

    安卓手机里的短信删除了如何恢复?生活中人们已经对手机产生很大的依赖,当然手机里也拥有这很多个人信息以及隐私,虽然现在很多时候大家聊天都会使用微信或者QQ,但是也有些重要的事情会发短信,如果不小心把短信 ...

  5. iOS模拟键盘长按删除

    最近做第三方键盘开发,模拟键盘的长按删除 删除按钮上添加长按事件: UILongPressGestureRecognizer *longPress = [[UILongPressGestureReco ...

  6. 微信小程序上传图片、长按删除及预览图片

    也是电商里做的上传评论图片之类的,如果用根据我文章中需要改的改一下就可以用了 首先是wxml <view class="conts"><view class=&q ...

  7. 14、微信小程序——上传、预览、长按删除图片

    1.上传多图 多图上传的关键在于--渲染 Page({data:{images:[]},upload(){wx.chooseImage({count:9, //获取图片数量sizeType: ['or ...

  8. win10删除文件提示源文件路经太长无法删除解决办法

    在win10下文件名过长或路经太长,删除时无法删除,在网上找了很多方法,都没办法删除,偶然在一篇博客中发现通过压缩文件删除源文件的方法真可以删除.这方法得记下来

  9. Android 用HorizontalScrollView实现ListView的Item滑动删除 ,滑动错乱 冲突

    用HorizontalScrollView实现类似微信的滑动删除 测试于:Android2.2+ 对于Android来说按键操作已经在减少,越来越多的手势操作层出不穷,今天介绍一款LIstView的I ...

  10. 安卓恢复大师怎样恢复手机删除的照片

    互盾安卓恢复大师(简称:安卓恢复大师)估计大家应该都使用过,此软件的功能非常丰富,今天我们就使用该软件来给大家分析下怎样恢复手机删除的照片. 1.首先安装好我们下面需要使用到的互盾安卓恢复大师(苹果手 ...

最新文章

  1. opencv多线程显示的问题和解决方法
  2. SSM项目搭建之配置文件
  3. Ruby 基础教程1-6
  4. IDEA中Git的更新、提交、还原方法
  5. Interllij IDEA 搭建Springboot(一)
  6. 智能灯控制页面用HTML编写,智能家居系统中智能化灯光控制的设计实现
  7. codevs3143 二叉树的序遍历
  8. mysql 正则 捕获_在mysql中模拟正则表达式捕获组
  9. html打印成功回调,web前端打印实现
  10. 互联⽹名词⼤全——商业模式篇
  11. ubuntu通过命令行清除内存
  12. JspStudy环境下tomcat服务器无法正确运行servlet的一种解决方法
  13. 计算机里只剩c盘了,家里电脑上突然只剩下C盘,怎么处理
  14. c语言数组五种排序法:bubble,choise,quick,insert,shell 和js 数组排序sort的区别
  15. 卡片跳转快应用指定页面,如何点返回直接退出快应用回到卡片
  16. 转载 测试开发岗--高频知识整理
  17. 90952-27-5,Thiol-PEG4-alcohol含有羟基和巯基的交联剂
  18. 人工智能一路狂飙现隐忧 过高预期恐催泡沫
  19. 【BZOJ 1305】[CQOI2009]dance跳舞
  20. 关于global_step参数

热门文章

  1. graphpad做折线图坐标轴数字_Excel图表中设置坐标轴的字体、图案格式、刻度格式和数字格式的方法...
  2. 带触屏显示器的智能路由器你想要吗?
  3. Qt会场触摸互动开发,超大屏触摸游戏开发
  4. 杂文 - 优化工作效率
  5. 仿 淘宝搜索栏,实现 用户输入搜索关键字时可以显示 搜索提示 的效果 Ajax
  6. 第二阶段(day14)Ajax
  7. python小游戏开题报告范文_独立小游戏制作论文开题报告
  8. SSL证书生成,签名,验证
  9. 35个非主流开源数据库 你知道吗?
  10. Android 模拟按键,模拟触摸点击,模拟滑动