Android 用ListView实现排序「建议收藏」

Android 用ListView实现排序「建议收藏」点击“单价”按钮或“数量信息”按钮,可按据升序或降序进行排序。布局没什么好说的在这里插入代码片<LinearLayoutxmlns: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_widt

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

点击“单价”按钮或“数量信息”按钮,可按据升序或降序进行排序。 在这里插入图片描述

布局没什么好说的

在这里插入代码片<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" tools:context=".shangpingActivity" android:orientation="vertical">

    <TextView android:layout_width="match_parent" android:layout_height="50dp" android:text="商品列表" android:textColor="#000000" android:textStyle="bold" android:textSize="25sp" android:gravity="center"/>

    <LinearLayout android:layout_marginTop="5dp" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">
        <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal">
            <TextView android:text="ID" android:textStyle="bold" android:textColor="#000000" android:gravity="center" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content"/>
            <TextView android:text="商品名称" android:textStyle="bold" android:textColor="#000000" android:gravity="center" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content"/>
            <TextView android:text="供应商" android:textStyle="bold" android:textColor="#000000" android:gravity="center" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content"/>
            <TextView android:id="@+id/tv_but_price" android:text="单价(元)" android:textStyle="bold" android:textColor="#000000" android:gravity="center" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content"/>
            <TextView android:id="@+id/tv_but_num" android:text="数量(个)" android:textStyle="bold" android:textColor="#000000" android:gravity="center" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content"/>

        </LinearLayout>


        <ListView android:id="@+id/list_viewsp" android:layout_width="match_parent" android:layout_height="match_parent"/>

    </LinearLayout>

</LinearLayout>

接下来写 商品的实体类

在这里插入代码片
public class Shangping {

    private String id;
    private String name;
    private String shop;
    private String price;
    private String num;

    public Shangping(String id, String name, String shop, String price, String num) {
        this.id = id;
        this.name = name;
        this.shop = shop;
        this.price = price;
        this.num = num;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getShop() {
        return shop;
    }

    public void setShop(String shop) {
        this.shop = shop;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }

    public String getNum() {
        return num;
    }

    public void setNum(String num) {
        this.num = num;
    }
}

实体类为后面的传值做准备

接着写listview的布局文件

在这里插入代码片

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal">
    <TextView android:id="@+id/tv_id" android:gravity="center" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content"/>
    <TextView android:id="@+id/tv_name" android:gravity="center" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content"/>
    <TextView android:id="@+id/tv_shop" android:gravity="center" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content"/>
    <TextView android:id="@+id/tv_privc" android:gravity="center" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content"/>
    <TextView android:id="@+id/tv_num" android:gravity="center" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content"/>

</LinearLayout>

然后写listview的适配器

在这里插入代码片


public class AdapterShangPing extends ArrayAdapter {

    private int count;

    public AdapterShangPing(@NonNull Context context, int resource, List<Shangping> list) {
        super(context, resource,list);
        count=resource;
    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {

            Shangping sp= (Shangping) getItem(position);
            View view= LayoutInflater.from(getContext()).inflate(count,null);
            TextView tv1,tv2,tv3,tv4,tv5;
            tv1=view.findViewById(R.id.tv_id);
            tv2=view.findViewById(R.id.tv_name);
            tv3=view.findViewById(R.id.tv_shop);
            tv4=view.findViewById(R.id.tv_privc);
            tv5=view.findViewById(R.id.tv_num);
            tv1.setText(sp.getId());
            tv2.setText(sp.getName());
            tv3.setText(sp.getShop());
            tv4.setText(sp.getPrice());
            tv5.setText(sp.getNum());

        return view;
    }
}


接着写排序,排序其实很简单,只需要创建一个实体类然后实现Comparator接口,然后重写compare方法

在这里插入代码片
public class Pricesort implements Comparator<Shangping> { 
   
    @Override
    public int compare(Shangping o1, Shangping o2) { 
   
        return o1.getPrice().compareTo(o2.getPrice());
    }
}
在这里插入代码片
public class Numsort implements Comparator<Shangping> { 
   
    @Override
    public int compare(Shangping o1, Shangping o2) { 
   
        return o1.getNum().compareTo(o2.getNum());
    }
}

最后附上Activity代码

在这里插入代码片
public class shangpingActivity extends AppCompatActivity {
    private ListView listView;
    private List<Shangping> list_sp=new ArrayList<>();//存数据
    TextView tvbut_price,tvbut_num;
    AdapterShangPing adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_shangping);
        into();//初始化数据
        listView=findViewById(R.id.list_viewsp);
        tvbut_num=findViewById(R.id.tv_but_price);
        tvbut_price=findViewById(R.id.tv_but_num);
         adapter=new AdapterShangPing(shangpingActivity.this,R.layout.list_shangping,list_sp);//初始化适配器
        listView.setAdapter(adapter);
            setClick();//设置textview的点击事件,然后排序
    }
    private  void into(){
        list_sp.add(new Shangping("1","发动机10A","发动机供应商","3,100","6"));
        list_sp.add(new Shangping("2","发动机10A","发动机供应商","4,100","1"));
        list_sp.add(new Shangping("3","发动机10A","发动机供应商","5,100","3"));
        list_sp.add(new Shangping("4","发动机10A","发动机供应商","4,300","4"));
    }
    private void setClick(){
			
        tvbut_price.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Collections.sort(list_sp,new Numsort());
                adapter.notifyDataSetChanged();
            }
        });
        tvbut_num.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Collections.sort(list_sp,new Pricesort());
                adapter.notifyDataSetChanged();
            }
        });

    }

}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/194194.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 如何自动打开浏览器

    如何自动打开浏览器

  • 【赠书】深入浅出Python量化交易实战

    【赠书】深入浅出Python量化交易实战‍‍本书主要以国内A股市场为例,借助第三方量化交易平台,讲述了KNN、线性模型、决策树、支持向量机、朴素贝叶斯等常见机器学习算法在交易策略中的应用,同时展示了如何对策略进行回测,以便让读者…

    2022年10月18日
  • java中的stringbuffer是什么_java中&和&&的区别

    java中的stringbuffer是什么_java中&和&&的区别JAVA提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了不可改变的字符串。而这个StringBuffer类提供的字符串可以进行修改。String:为不可变对象,一旦被创建,就不能修改它的值.对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.

  • ZPL指令_TSC指令

    ZPL指令_TSC指令^CC,~CC改变格式指令前缀  ^CC,~CC(改变脱字符)指令是用于改变指令前缀。缺省前缀是脱字符(^)。^CC,~CC指令格式  ^CCx,~CCx^CC,~CC=改变脱字符x=任何ASCII字符  缺省值:要求有参数。如不用参数,下一字符接收后作为新的前缀字符。

    2022年10月25日
  • 免费mt4下载软件mt4交易平台下载_MT5架设

    免费mt4下载软件mt4交易平台下载_MT5架设众所周知,外汇市场是全球最大的金融市场,而利用白标技术成为外汇服务提供商是很多人选择运营外汇业务的第一步。相对于外汇主标需要购买整套系统和独立服务器这样的高额成本,搭建一个白标平台要容易的多,也可以相对较快地开展外汇业务。为了帮助中小型对冲基金、高频交易机构、自营交易公司以及大型代理等快速完成外汇平台搭建,泰坦科技(STANDARDFINTECH)推出一站式白标解决方案,帮助客户以最低的成本和最高的效率开启外汇经纪事业。泰坦科技一站式白标提供最高水准解决方案泰坦科技一站…

  • 扩展欧几里得

    扩展欧几里得

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号