今天我有这个问题: 我试图根据一个重要因素改变项目位置。 我的意思是:如果我的对象有一个等于特定值的字符串(我在此方法之前得到)XX,它应该添加到我的RecyclerView的第一个位置。 否则处于正常位置。 所以我只是通过
在我的RecyclerView活动中做到这一点if (myString.equals("XX")) {
studi.add(0, s); //here if it respect the if statement goes to at the top position
}
//else its normal pos.
else {
studi.add(s);
}
使用“studi”customArray ...
设置RecyclerView适配器问题是我在myAdapter上使用比较器来排序我的所有RecyclerView项目,即使我在索引0处添加项目,我的比较器也设置在它所说的位置。 那我怎么能做我想要的呢? 我希望我能很好地解释我的问题。 如果没有抱歉。
这是我的适配器:
public class MyAdapter extends RecyclerView.Adapter<MyHolder> implements Filterable {
Context c;
ArrayList<Studi> studi;
ArrayList<Studi> filterList;
CustomFilter filter;
public MyAdapter(Context c, ArrayList<Studi> studi) {
this.c = c;
this.studi = studi;
this.filterList = studi;
//ordina per vicinanza
Collections.sort(studi, new Comparator<Studi>() {
public int compare(Studi s1, Studi s2) {
//solo se non sono annunci
if (s1.getDistanza() != null && s2.getDistanza() != null) {
return Integer.parseInt(s1.getDistanza()) - Integer.parseInt(s2.getDistanza());
} else return 1;
}
});
//se gli studi non hanno la distanza vanno infondo
Collections.sort(studi, new Comparator<Studi>() {
public int compare(Studi s1, Studi s2) {
boolean item1Match = s1.getDistanza() == null;
boolean item2Match = s2.getDistanza() == null;
if (item1Match == item2Match) {
return 0;
}
return item1Match ? 1 : -1;
}
});
}
@Override
public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.model, parent, false);
MyHolder holder = new MyHolder(v);
return holder;
}
@Override
public void onBindViewHolder(MyHolder holder, int position) {
...
}
@Override
public int getItemCount() {
return (studi == null) ? 0 : studi.size();
}
//FILTER THING......................
public Filter getFilter() {
if (filter == null) {
filter = new CustomFilter(filterList, this);
}
return filter;
}
}