我的列表视图如下所示:
- Name(String) - - Money(int)--- --- Years(int)----
我想按名称或按金钱或按年过滤此列表视图。 我可以在每个列上添加一个ImageView,如箭头向上或向下调用onClickListener来制作listview过滤器。
看看下面的图片: enter image description here 根据图片点击Img1 =>按名称过滤,Img2 =>按钱过滤......
这里是适配器
public class Adapter extends BaseAdapter {
private Activity activity;
private LayoutInflater inflater;
private List<Items> items;
public Adapter (Activity activity, List<Items> items){
this.activity=activity;
this.items =items;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(inflater==null){
inflater=(LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
if(convertView==null){
convertView=inflater.inflate(R.layout.items_row,null);
}
TextView name=(TextView)convertView.findViewById(R.id.acname);
TextView money=(TextView)convertView.findViewById(R.id.ac_money);
TextView year=(TextView)convertView.findViewById(R.id.ac_year);
Items item=items.get(position);
name.setText(item.getName());
money.setText(item.getMoney());
year.setText(item.getYear());
return convertView;
}
}
感谢您的帮助
答案 0 :(得分:0)
在Item
班级中,添加以下内部类(比较器):
static class NameComparator implements Comparator<Item> {
@Override
public int compare(Item a, Item b) {
return a.getName().compareTo(b.getName());
}
}
static class MoneyComparator implements Comparator<Item> {
@Override
public int compare(Item a, Item b) {
return a.getMoney().compareTo(b.getMoney);
}
}
static class YearComparator implements Comparator<Item> {
@Override
public int compare(Item a, Item b) {
return a.getYear().compareTo(b.getYear);
}
}
在适配器中,您可以添加以下方法:
public void sortByName(boolean descending) {
Collections.sort(items, new Item.NameComparator());
if (descending) Collections.reverse(items);
notifyDataSetChanged();
}
public void sortByMoney(boolean descending) {
Collections.sort(items, new Item.MoneyComparator());
if (descending) Collections.reverse(items);
notifyDataSetChanged();
}
public void sortByYear(boolean descending) {
Collections.sort(items, new Item.YearComparator());
if (descending) Collections.reverse(items);
notifyDataSetChanged();
}
现在,您可以使用箭头的onClick()
方法调用这些方法。
答案 1 :(得分:0)
通过使用Collections.sort()方法,然后调用notifyDataSetChanged()。