[英]Sort items in RecyclerView array according to an int parameter
I have an Arraylist with 5 items. 我有一个包含5个项目的Arraylist。 Each of those items has a priority.
这些项目均具有优先级。 Want I want to do is sort those items according to that priority.
我想做的就是根据优先级对这些项目进行排序。 Lets say item 3 has priority 100 , then that item should go first in the list.
假设项目3的优先级为100,那么该项目应该在列表中排在第一位。 Item 0 has priority -10, then that item has to go last in the list.
项目0的优先级为-10,则该项目必须在列表中排在最后。 How do I implement something like that?
我该如何实现呢? Adapterclass:
适配器类:
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.cardViewHolder> {
private ArrayList<Card> item;
public CardAdapter(ArrayList<Card> item){
this.item = item;
}
@Override
public cardViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_layout,parent,false);
cardViewHolder card = new cardViewHolder(v);
return card;
}
@Override
public void onBindViewHolder(cardViewHolder holder, int position) {
holder.titel.setText(item.get(position).getTitel());
holder.card_icon.setImageResource(item.get(position).getIcon());
holder.load_more.setText("Load more");
}
@Override
public int getItemCount() {
return item.size();
}
public static class cardViewHolder extends RecyclerView.ViewHolder{
TextView titel;
ImageView card_icon;
TextView load_more;
public cardViewHolder(View itemView){
super(itemView);
titel = (TextView)itemView.findViewById(R.id.titel);
card_icon = (ImageView)itemView.findViewById(R.id.card_icon);
load_more = (TextView)itemView.findViewById(R.id.loadmore);
}
}}
Main class 主班
public class MainActivity extends ActionBarActivity {
private RecyclerView recycler;
private RecyclerView.LayoutManager lmanager;
private RecyclerView.Adapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList<Card> data = new ArrayList<Card>();
data.add(new Card(R.drawable.mensa, "Mensa", "mensa"));
data.add(new Card(R.drawable.book, "Bibliothek", "bibliothek"));
data.add(new Card(R.drawable.timetable, "Stundenplan", "timetable"));
data.add(new Card(R.drawable.message, "Mitteilungen", "mitteilungen"));
data.add(new Card(R.drawable.noten, "Noten", "noten"));
recycler = (RecyclerView)findViewById(R.id.recycler);
lmanager = new LinearLayoutManager(this);
recycler.setLayoutManager(lmanager);
adapter = new CardAdapter(data);
recycler.setAdapter(adapter);
}}
Card class 卡类
public class Card {
private String titel;
private int card_icon;
private String id;
private int priority;
public Card(int icon, String titel, String id) {
this.card_icon = icon;
this.titel = titel;
this.id = id;
priority=0;
}
public String getTitel() {
return titel;
}
public int getIcon() {
return card_icon;
}
public String getId() {
return id;
}
public void setPriority(int priority){
this.priority = priority;
}}
Add the priority to the Card Object. 将优先级添加到Card对象。 eg.
例如。
data.add(new Card(id, name, description, priority);
Sort the arraylist with custom Comparator
For eg. 使用自定义
Comparator
对arraylist进行排序,例如。
public class CustomComparator implements Comparator<Card> {
@Override
public int compare(Card card1, Card card2) {
Integer priority1 = card1.getPriority();
Integer priority2 = card2.getPriority();
return priority2.compareTo(priority1);
}
}
Collections.sort(data, new CustomComparator());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.