首先是源码下载:

http://download.csdn.net/download/qq78442761/10224716


运行截图如下:

刚开始运行:



按分数排序后:



长按选中要删除的对象



确定删后




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<Student> 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<Student> dataCopy=new ArrayList();

        public void sortByName() {

            // 对副本排序(不影响原始数据)
            Collections.sort(listData,new java.util.Comparator<Student>(){
                @Override
                public int compare(Student o1, Student o2)
                {
                    return o1.name.compareTo(o2.name);
                }
            });
            // 通知ListView刷新显示
            notifyDataSetChanged();
        }
        public void sortByScore() {
            Collections.sort(listData,new Comparator<Student>(){
                @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<Student> iter=listData.iterator();
        while(iter.hasNext()){
            Student s=iter.next();
            if(s.selected){
                iter.remove();
            }
        }
        selectMode=false;
        listAdapter.notifyDataSetChanged();;
    }
}


这里,图片和界面啥的,都不介绍了,此程序很简单,入门级,在此都不详细介绍。有兴趣的同学,下载上面链接的源码

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐