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)
blank

相关推荐

  • go富集分析和kegg富集分析的区别_非模式生物怎么做GO富集

    go富集分析和kegg富集分析的区别_非模式生物怎么做GO富集前言关于clusterProfiler这个R包就不介绍了,网红教授宣传得很成功,功能也比较强大,主要是做GO和KEGG的功能富集及其可视化。简单总结下用法,以后用时可直接找来用。首先考虑一个问题:

  • hmacsha256算法原理_一次解析

    hmacsha256算法原理_一次解析需要支持HMACSHA256算法,GitHub找到源码具体地址https://github.com/aperezdc/hmac-sha256/blob/master/hmac-sha256.c移植到目标平台,稍作处理测试ok了,原理:1.输入密钥key和固定的数据(0x36)进行异或操作生成一个64B的数据kx;2.使用kx+输入数据执行sha256算法得到32B的out;3.使用…

    2022年10月22日
  • 利用两个dll实现全局钩子

    利用两个dll实现全局钩子全局消息钩子的钩子函数一定要再dll中,然后启动安装钩子不能在dll中,要是我想在程序开始时安装钩子怎么办。很简单利用两个钩子就行了,只要安装钩子和钩子函数不在同一个dll就行了。下面请看案例(编译

  • java根据经纬度计算距离_java根据高德经纬度获取地区

    java根据经纬度计算距离_java根据高德经纬度获取地区前一阵项目中,有一个需求:是查找附近的人,其实就是查询某个距离内有多少用户。实现方式还是比较简单的,首先用户在APP上开启定位权限,将自己的经纬度都存储到数据库,然后以此经纬度为基准,以特定距离为半径,查找此半径内的所有用户。那么,如何java如何计算两个经纬度之间的距离呢?有两种方法,误差都在接受范围之内。1、基于googleMap中的算法得到两经纬度之间的距离,计算精度与谷歌地图的距离精度差不…

  • zookeeper入门教程_kubernetes github

    zookeeper入门教程_kubernetes githubzookeeperwatcher架构zookeeper 配置中心分布式ID分布式锁集群搭建数据一致性协议:zab协议Zookeeper Leader选举Observer角色及其配置watcher架构客户端首先将Watcher注册到服务器,同时将Watch对象保存到客户端的Watch管理器中。当Zookeeper服务器监听到的数据发生变化时,服务器会通知客户端,接着客户端的Watch管理器会触发相关的Watcher来回调响应处理逻辑,从而完成整体的数据发布/订阅流程。javaAPIJava

  • gmapping matlab实现_Gmapping笔记[通俗易懂]

    gmapping matlab实现_Gmapping笔记[通俗易懂]2D-slam激光slam:开源代码的比较HectorSLAMGmappingKartoSLAMCoreSLAMLagoSLAM作者:kint_zhao原文:https://blog.csdn.net/zyh821351004/article/details/47381135最近找到一篇论文比较了一下目前ros下2D激光slam的开源代码效果比较:详细参见论文:Anevalu…

发表回复

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

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