第二次发帖....
这是我的问题
这是关于Android的。我正在实现具有异构布局的Recycler视图。我正在向它传递静态数据。因此,如果它的布局A它需要对象A数据。如果它的布局B它需要对象B数据,依此类推。
示例:
List.add(new A("May 27",2,3000$));
List.add(new B("April 21",2,"Place1",2000$));
List.add(new c("March 20","from place","toplace",5000$));
我的问题是如何根据我们为每个对象传递的日期对Recyclerview进行排序。让我们说" 3月20日"首先是它必须出现在recyclerview的顶部和" 5月27日"应该在Recyclerview中显示最后一个。
我可以通过传递列表和比较器接口的实现作为第二个参数来使用Collections.sort()。通过取走日期字段并将其插入父类D并使类A,B,C继承D类,但它不适用于我的情况。
Class D {
private String date;
// getter and setter method
}
Class A extends D{}
Class B extends D{}
Class C extends D{}
IN RecyclerViewAdapter
//onCreateViewHolder()
//OnBindViewHolder()
//getiewType()
//Creating list of data
private ArrayList<Object> getData(){
ArrayList<Object> list = new ArrayList<>();
for(int i=0;i<=20;i++) {
list.add(new A("MAY 23", 1, 3000$));
list.add(new B("April27", 1, 2, 3400$));
list.add(new C("New york" "March 28", 1000$, 2, 2));
}
Collections.sort(list, new Comparator<D>() {
@Override
public int compare(D l1, D l2) {
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd", Locale.ENGLISH);
Date d1=null;
Date d2= null;
try {
d1=sdf.parse(String.valueOf(l1.getDate()));
d2= sdf.parse(String.valueOf(l2.getDate()));
} catch (ParseException e) {
e.printStackTrace();
}
if(d1 != null && d1.after(d2)){
return -1;
}else{
return 1;}
}
return 0;
## error&#34;意外令牌&#34; ///或者如果在这里做某事,它会将整个块##显示为错误:
});
return list;
}
有人可以帮我解决这个问题。提前致谢
答案 0 :(得分:0)
尝试将Collections.sort(list, new Comparator<D>() {
更改为Collections.sort(list, new Comparator<Object>() {