java.lang.ClassCastException:java.util.ArrayList不能强制转换为com.parse.ParseObject

java.lang.ClassCastException:java.util.ArrayList不能强制转换为com.parse.ParseObject,java,android,parse-platform,Java,Android,Parse Platform,我目前正在开发一款android应用程序,它可以从解析服务器获取数据。我想使用searchview过滤我的recyclerView。但它在搜索时什么也没显示。它显示了此行中的错误mRooms=(ArrayList)filterResults.values 请帮助我编辑有关此问题的代码 RoomCard回收服务适配器 private List mRooms=new ArrayList(); 私人物品房; 私有字符串mSection; 私人语境; 公共房间卡回收服务适配器(){ 超级(差异回调);

我目前正在开发一款android应用程序,它可以从解析服务器获取数据。我想使用searchview过滤我的recyclerView。但它在搜索时什么也没显示。它显示了此行中的错误mRooms=(ArrayList)filterResults.values 请帮助我编辑有关此问题的代码

RoomCard回收服务适配器
private List mRooms=new ArrayList();
私人物品房;
私有字符串mSection;
私人语境;
公共房间卡回收服务适配器(){
超级(差异回调);
}
public static final DiffUtil.ItemCallback DIFF_CALLBACK=new
DiffUtil.ItemCallback(){
@凌驾
公共布尔值AreItemsSame(@NonNull ParseObject oldItem,@NonNull ParseObject newItem){
返回oldItem.getObjectId()==newItem.getObjectId();
}
@凌驾
公共布尔值是相同的内容(@NonNull ParseObject oldItem,@NonNull ParseObject newItem){
返回(oldItem.getUpdatedAt().equals(newItem.getUpdatedAt())&&
oldItem.getCreatedAt().equals(newItem.getCreatedAt());
}
};
公共房间卡回收服务适配器(字符串部分){
这个();
this.m节=节;
}
公共RoomCardRecycleServiceAdapter(上下文,ListarrayList){
这个();
this.context=上下文;
mRooms=arrayList;
}
@凌驾
public RoomViewHolder onCreateViewHolder(视图组父级,int-viewType){
//使用适当的视图为viewholder充气
View=LayoutFlater.from(parent.getContext())。充气(R.layout.room\u cardview,parent,
假);
返回新的RoomViewHolder(parent.getContext(),视图);
}
@凌驾
public void onBindViewHolder(@NonNull RoomViewHolder,int位置){
房间=获取项目(位置);
holder.mRoomLocation.setText(room.getString(“room郊区”);
holder.mRoomPrice.setText(Integer.toString(room.getInt(“roomMonthlyRent”));
holder.mInclusiveOrNot.setText(room.getString(“roomrentclusiveofbills”);
holder.mPropertyType.setText(room.getString(“roomPropertyType”));
holder.mNumOfBeds.setText(Integer.toString(room.getInt(“roombeddrooms”));
holder.mNumOfBaths.setText(Integer.toString(room.getInt(“roomBathrooms”));
}
@凌驾
公共过滤器getFilter(){
返回新筛选器(){
@凌驾
受保护过滤器结果执行过滤(CharSequence CharSequence){
FilterResults FilterResults=新的FilterResults();
String charString=charSequence.toString();
if(charString.isEmpty()){
filterResults.values=mRooms;
filterResults.count=mRooms.size();
}否则{
List filteredList=新建ArrayList();
用于(ParseObject ParseObject:mRooms){
if(parseObject.getString(“RoomSubparent”).toLowerCase()包含(charString.toLowerCase()){
添加(parseObject);
}
}
filterResults.values=filteredList;
filterResults.count=filteredList.size();
}
返回过滤器结果;
}
@凌驾
受保护的无效发布结果(CharSequence CharSequence、FilterResults FilterResults){
mRooms=(ArrayList)filterResults.values;
notifyDataSetChanged();
}
};
}

只需按如下方式调用notifyDataSetChanged()-

用这个

 @Override
 protected void publishResults(CharSequence charSequence, FilterResults 
 filterResults) { 
     if (filterResults!= null && results.count > 0) {
         notifyDataSetChanged();
     } else {
         notifyDataSetInvalidated();
     }
 }

在构造函数中定义一个附加变量mFilteredRooms,并将其设置为arrayList

private List<ParseObject> mFilteredRooms = new ArrayList<>();

    public RoomCardRecyclerViewAdapter(Context context, List<ParseObject> arrayList) {
        this();
    
        this.context = context;
        mRooms = arrayList;
        mFilteredRooms = arrayList;
         
    }
private List mFilteredRooms=new ArrayList();
公共RoomCardRecycleServiceAdapter(上下文上下文,列表arrayList){
这个();
this.context=上下文;
mRooms=arrayList;
mFilteredRooms=arrayList;
}
现在,

@覆盖
公共过滤器getFilter(){
返回新筛选器(){
@凌驾
受保护过滤器结果执行过滤(CharSequence CharSequence){
FilterResults FilterResults=新的FilterResults();
ArrayList filteredList=新建ArrayList();
if(charSequence==null | | charSequence.toString().trim().equals(“”){
filteredList.addAll(mfilteredroms);
}否则{
String charString=charSequence.toString();
用于(ParseObject ParseObject:mFilteredRooms){
if(parseObject.getString(“RoomSubparent”).toLowerCase()包含(charString.toLowerCase()){
添加(parseObject);
}
}
filterResults.values=filteredList;
filterResults.count=filteredList.size();
}
返回过滤器结果;
}
@凌驾
受保护的无效发布结果(CharSequence CharSequence、FilterResults FilterResults){
mRooms=(列表)filterResults.values;
notifyDataSetChanged();
}
};

问题已经解决。但在搜索时它不会给我任何结果。如果答案对您有效,请接受。并共享整个代码以解决进一步的问题。嗨@sarah谢谢您的回答。但我仍然面临一个问题。我搜索物品时,recyclerview没有排序。我应该怎么解决解决这个问题?
private List<ParseObject> mFilteredRooms = new ArrayList<>();

    public RoomCardRecyclerViewAdapter(Context context, List<ParseObject> arrayList) {
        this();
    
        this.context = context;
        mRooms = arrayList;
        mFilteredRooms = arrayList;
         
    }
@Override
  public Filter getFilter(){
  return new Filter() {
      @Override
      protected FilterResults performFiltering(CharSequence charSequence) {

          FilterResults filterResults = new FilterResults();
          ArrayList<ParseObject> filteredList = new ArrayList<>();

          
          if (charSequence == null || charSequence.toString().trim().equals("")){
              filteredList.addAll(mFilteredRooms);

          }else {
              String charString = charSequence.toString();
              
              for (ParseObject parseObject : mFilteredRooms){
              if (parseObject.getString("roomSuburb").toLowerCase().contains(charString.toLowerCase())){
                  filteredList.add(parseObject);
               }
          }
          filterResults.values = filteredList;
          filterResults.count= filteredList.size();
      }

      return filterResults;

      }

      @Override
      protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
          mRooms = (List<ParseObject>) filterResults.values;
          notifyDataSetChanged();
      }
  };