Android容器相关开发实践
发布日期:2021-06-30 10:51:47
浏览次数:2
分类:技术文章
本文共 6444 字,大约阅读时间需要 21 分钟。
首先是源码下载:
运行截图如下:
刚开始运行:
按分数排序后:
长按选中要删除的对象
确定删后
IDE为Android Studio 2.3.3
内容包括:
1.点击
2.长按
3.使用Adapter
MainActivity源码如下:
package example.demo4;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.Iterator;public class MainActivity extends AppCompatActivity { //数据源 ArrayList这里,图片和界面啥的,都不介绍了,此程序很简单,入门级,在此都不详细介绍。有兴趣的同学,下载上面链接的源码listData=new ArrayList(); MyListAdapter listAdapter; boolean selectMode=false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //数据 listData.add(new Student("QiuQiu",false,100)); listData.add(new Student("TuiTui",false,98)); listData.add(new Student("ZXM",true,59)); listData.add(new Student("MeiY",true,99)); listData.add(new Student("SB",true,58)); listAdapter=new MyListAdapter(); //获取Listview ListView listView=(ListView)findViewById(R.id.id_listview); listView.setAdapter(listAdapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { Student s = (Student) listAdapter.getItem(position); Toast.makeText(MainActivity.this, "点击了" + s.name, Toast.LENGTH_SHORT).show(); if(selectMode){ Student S=(Student)listAdapter.getItem(position); S.selected=!S.selected; listAdapter.notifyDataSetChanged(); } } }); listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView parent, View view, int position, long id) { Toast.makeText(MainActivity.this, "不要长按", Toast.LENGTH_SHORT).show(); selectMode=true; //选中这一项 Student s=(Student)listAdapter.getItem(position); s.selected=true; listAdapter.notifyDataSetChanged(); return true; } }); } public void doSortByName(View view){ listAdapter.sortByName(); } public void doSortByScore(View view){ listAdapter.sortByScore(); } private class Student{ public String name; public boolean sex; public boolean selected;//是否选中 public int score; public Student(String name,boolean sex,int score){ this.name=name; this.sex=sex; this.score=score; } } //写listview的时候总会写一个适配器 private class MyListAdapter extends BaseAdapter{ Drawable[] icons=new Drawable[2]; Drawable[] iconsel=new Drawable[2]; //数据副本 ArrayList dataCopy=new ArrayList(); public void sortByName() { // 对副本排序(不影响原始数据) Collections.sort(listData,new java.util.Comparator (){ @Override public int compare(Student o1, Student o2) { return o1.name.compareTo(o2.name); } }); // 通知ListView刷新显示 notifyDataSetChanged(); } public void sortByScore() { Collections.sort(listData,new Comparator (){ @Override public int compare(Student o1, Student o2) { if(o1.score > o2.score) return 1; else if(o1.score== o2.score) return 0; else return -1; } }); notifyDataSetChanged(); } public MyListAdapter(){ icons[0]=MainActivity.this.getDrawable(R.drawable.img_woman); icons[1]=getDrawable(R.drawable.img_man); iconsel[0]=getDrawable(R.drawable.img_uncheck); iconsel[1]=getDrawable(R.drawable.img_check); } @Override public int getCount() { return listData.size(); } @Override public Object getItem(int position) { return listData.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { //创建控件 if(convertView==null){ convertView=getLayoutInflater().inflate(R.layout.list_item_student,parent,false); } //获取数据 Student data=(Student)getItem(position); //显示数据 TextView textView=(TextView)convertView.findViewById(R.id.id_textView); textView.setText(data.name+"分数:"+data.score); ImageView imageView=(ImageView)convertView.findViewById(R.id.id_imageView); if(data.sex) imageView.setImageDrawable(icons[1]); else imageView.setImageDrawable(icons[0]); //选择模式 imageView = (ImageView)convertView.findViewById(R.id.id_icon_select); if(!selectMode){ imageView.setVisibility(View.GONE); } else{ imageView.setVisibility(View.VISIBLE); if(data.selected) imageView.setImageDrawable(iconsel[1]); else imageView.setImageDrawable(iconsel[0]); } return convertView; } } public void cancelSelecting(View view){ //清除选中状态 for(Student s:listData){ s.selected=false; } //退出选择模式 selectMode=false; listAdapter.notifyDataSetChanged(); } public void removeSelected(View view){ Iterator iter=listData.iterator(); while(iter.hasNext()){ Student s=iter.next(); if(s.selected){ iter.remove(); } } selectMode=false; listAdapter.notifyDataSetChanged();; }}
转载地址:https://it1995.blog.csdn.net/article/details/79167628 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月11日 00时33分51秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
NAS(Neural Architecture Search) 神经结构搜索
2019-04-30
NLP 之 CRF(条件随机场)
2019-04-30
SOTA model
2019-04-30
ablation study 消融实验/消融研究
2019-04-30
ICDAR数据集
2019-04-30
Pytorch(十四) —— hook
2019-04-30
GPT (OpenAI GPT)
2019-04-30
linux(ubuntu)切换用户后出现 -bash-$
2019-04-30
github国内镜像站
2019-04-30
Camera-ready ddl
2019-04-30
NLP之N-Gram模型
2019-04-30
CIFAR-100数据集
2019-04-30
Tiny Imagenet 数据集
2019-04-30
Knowledge Amalgamation 知识合并
2019-04-30
autossh
2019-04-30
CUB-200鸟类数据集
2019-04-30
Python等程序/linux运行程序 后台运行 —— nohup
2019-04-30
MMOCR
2019-04-30
Bounding box regression 边框回归
2019-04-30
MMLab工具箱 —— Registry类(注册类机制/注册器)
2019-04-30