2016-11-11 2 views
0

У меня есть Arraylist с 5 элементами. Каждый из этих элементов имеет приоритет. Хочу, чтобы я хотел сортировать эти элементы в соответствии с этим приоритетом. Допустим, что элемент 3 имеет приоритет 100, тогда этот элемент должен идти первым в списке. Элемент 0 имеет приоритет -10, тогда этот элемент должен оставаться последним в списке. Как мне реализовать что-то подобное? Adapterclass:Сортировка элементов в массиве RecyclerView в соответствии с параметром int

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); 
    } 

}} 

Основной класс

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

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; 
}} 

ответ

0

Добавьте приоритет объекта карты. например.

data.add(new Card(id, name, description, priority); 

Сортировка ArrayList с пользовательскими Comparator Для например.

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()); 
Смежные вопросы