Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.NullPointerException:尝试调用接口方法';java.util.Iterator java.util.List.Iterator();关于空对象引用_Java_Android - Fatal编程技术网

java.lang.NullPointerException:尝试调用接口方法';java.util.Iterator java.util.List.Iterator();关于空对象引用

java.lang.NullPointerException:尝试调用接口方法';java.util.Iterator java.util.List.Iterator();关于空对象引用,java,android,Java,Android,我目前正在开发一款android应用程序,它可以从解析服务器获取数据。我想使用searchview过滤我的recyclerView。但它在搜索时什么也没显示。它在这一行中给了我错误*(ParseObject ParseObject:mRooms){*请帮助我编辑有关此问题的代码 RoomCard回收服务适配器 private List mRooms=new ArrayList(); 私有数组列表过滤器列表; 私人物品房; 私有字符串mSection; 私人语境; 公共房间卡回收服务适配器(){

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

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;
filterlist=(ArrayList)ArrayList;
}
公共类RoomViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
受保护的图像视图mRoomImage;
受保护的文本视图mRoomPrice;
受保护的文本视图mInclusiveOrNot;
受保护的文本视图mPropertyType;
受保护的文本视图mNumOfBeds;
受保护的文本视图mNumOfBaths;
受保护的文本视图mRoomLocation;
私人语境;
公共RoomViewHolder(上下文、视图项视图){
超级(项目视图);
mRoomImage=itemView.findviewbyd(R.id.room\u图像);
mRoomPrice=itemView.findviewbyd(R.id.price\u标签);
mInclusiveOrNot=itemView.findviewbyd(R.id.incl_不包括标签);
mPropertyType=itemView.findViewById(R.id.propertyType_标签);
mNumOfBeds=itemView.findviewbyd(R.id.num\u beds\u标签);
mNumOfBaths=itemView.findviewbyd(R.id.details\u num\u baths\u标签);
mRoomLocation=itemView.findviewbyd(R.id.location\u标签);
this.context=上下文;
//设置onclick侦听器
setOnClickListener(这个);
}
@凌驾
公共void onClick(视图v){
Log.i(“单击事件:,“我的房间已被单击”);
int pos=getAdapterPosition();
意图;
ParseObject room=getCurrentList().get(pos);
//创建ParseObject代理
ParseProxyObject roomProxy=新的ParseProxyObject(房间);
Toast.makeText(上下文,room.getString(“room郊区”),Toast.LENGTH_LONG.show();
//转向相应的活动
if(mSection!=null){
Log.i(“mssection text:”,“mssection text是:”+mssection);
if(mSection.equals(“我的房间”)){
//开始我的房间细节活动
Log.i(“我的房间:”,“选择的房间”+roomProxy.getObjectId());
intent=新的intent(上下文,MyRoomDetailActivity.class);
//将房间添加到目标中
intent.putExtra(“currentSelectedRoomObject”,房间);
Log.i(“选定房间”、“放置额外房间”+房间);
intent.putExtra(“roomObject”,roomProxy);
背景。开始触觉(意图);
}
}否则{
Log.i(“我的房间:”,改为“为MyRoomDetail活动加载的RoomDetailActivity”);
意图=新意图(上下文、RoomDetailActivity.class);
//将代理添加到意图中
intent.putExtra(“roomObject”,roomProxy);
背景。开始触觉(意图);
}
}
}
@凌驾
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){
String charString=charSequence.toString();
if(charString.isEmpty()){
房间=(ParseObject)mRooms;
}否则{
List filteredList=新建ArrayList();
用于(ParseObject ParseObject:mRooms){
if(parseObject.getString(“RoomSubparent”).toLowerCase()包含(charString.toLowerCase()){
添加(parseObject);
}
}
房间=(ParseObject)过滤器列表;
}
FilterResults FilterResults=新的FilterResults();
filterResults.values=房间;
返回过滤器结果;
}
@凌驾
受保护的无效发布结果(CharSequence CharSequence、FilterResults FilterResults){
room=(ParseObject)filterResults.values;
notifyDataSetChanged();
}
};
}
主要活动
mHomeSectionsPagerAdapter=new
HomeSectionsPagerAdapter(getSupportFragmentManager());
RoomCardRecycleServiceAdapter=新的RoomCardRecycleServiceAdapter(此,
M房间);
mRooms=newarraylist();
//使用分区适配器设置ViewPager。
mView
private List<ParseObject> mRooms = new ArrayList<>();
private ArrayList<ParseObject> filterlist;
private ParseObject room;
private String mSection;
private Context context;

public RoomCardRecyclerViewAdapter(){
    super(DIFF_CALLBACK);
}
public static final DiffUtil.ItemCallback<ParseObject>  DIFF_CALLBACK = new 
DiffUtil.ItemCallback<ParseObject>() {
    @Override
    public boolean areItemsTheSame(@NonNull ParseObject oldItem, @NonNull ParseObject newItem) {
        return oldItem.getObjectId() == newItem.getObjectId();
    }

    @Override
    public boolean areContentsTheSame(@NonNull ParseObject oldItem, @NonNull ParseObject newItem) {
        return (oldItem.getUpdatedAt().equals(newItem.getUpdatedAt()) && 
oldItem.getCreatedAt().equals(newItem.getCreatedAt()));
    }
};


public RoomCardRecyclerViewAdapter(String section) {
    this();

    this.mSection = section;
}
public RoomCardRecyclerViewAdapter(Context context, List<ParseObject>arrayList) {
    this();

    this.context = context;
    mRooms = arrayList;
    filterlist = (ArrayList<ParseObject>) arrayList;
}


public class RoomViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
    protected ImageView mRoomImage;
    protected TextView mRoomPrice;
    protected TextView mInclusiveOrNot;
    protected TextView mPropertyType;
    protected TextView mNumOfBeds;
    protected TextView mNumOfBaths;
    protected TextView mRoomLocation;

    private Context context;

    public RoomViewHolder(Context context, View itemView) {
        super(itemView);
        mRoomImage = itemView.findViewById(R.id.room_image);
        mRoomPrice = itemView.findViewById(R.id.price_label);
        mInclusiveOrNot = itemView.findViewById(R.id.incl_excl_label);
        mPropertyType = itemView.findViewById(R.id.propertyType_label);
        mNumOfBeds = itemView.findViewById(R.id.num_beds_label);
        mNumOfBaths = itemView.findViewById(R.id.details_num_baths_label);
        mRoomLocation = itemView.findViewById(R.id.location_label);
        this.context = context;
        //set onclick listener
        itemView.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        Log.i("Click event: ", "My room has been clicked.");
        int pos = getAdapterPosition();
        Intent intent;
        ParseObject room = getCurrentList().get(pos);

        //create the ParseObject proxy
        ParseProxyObject roomProxy = new ParseProxyObject(room);
        Toast.makeText(context, room.getString("roomSuburb"), Toast.LENGTH_LONG).show();
        //fork to corresponding activity
        if(mSection != null) {
            Log.i("mSection text: ", "mSection text is: " + mSection);
            if (mSection.equals("My Rooms")) {
                //start my rooms detail activity
                Log.i("My room: ", "Room selected " + roomProxy.getObjectId());
                intent = new Intent(context, MyRoomDetailActivity.class);
                //add the room to the intent
                intent.putExtra("currentSelectedRoomObject", room);
                Log.i("Selected room", "Put Extra, " + room);
                intent.putExtra("roomObject", roomProxy);
                context.startActivity(intent);
            }
        }else {
            Log.i("My room:", "RoomDetailActivity loaded for MyRoomDetail Activity instead");
            intent = new Intent(context, RoomDetailActivity.class);
            //add the proxy to the intent
            intent.putExtra("roomObject", roomProxy);
            context.startActivity(intent);
        }

    }
}

@Override
public RoomViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    //inflating the viewholder with the appropriate views
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.room_cardview, parent, 
false);

    return new RoomViewHolder(parent.getContext(), view);
}

@Override
public void onBindViewHolder(@NonNull RoomViewHolder holder, int position) {
    room = getItem(position);
    holder.mRoomLocation.setText(room.getString("roomSuburb"));
    holder.mRoomPrice.setText(Integer.toString(room.getInt("roomMonthlyRent")));
    holder.mInclusiveOrNot.setText(room.getString("roomRentInclusiveOfBills"));
    holder.mPropertyType.setText(room.getString("roomPropertyType"));
    holder.mNumOfBeds.setText(Integer.toString(room.getInt("roomBedrooms")));
    holder.mNumOfBaths.setText(Integer.toString(room.getInt("roomBathrooms")));

   

@Override
public Filter getFilter(){
  return new Filter() {
      @Override
      protected FilterResults performFiltering(CharSequence charSequence) {

String charString = charSequence.toString();
if (charString.isEmpty()){
room = (ParseObject) mRooms;

}else {
List<ParseObject> filteredList = new ArrayList<>();
for (ParseObject parseObject : mRooms){
    if (parseObject.getString("roomSuburb").toLowerCase().contains(charString.toLowerCase())){
        filteredList.add(parseObject);
    }
}
room = (ParseObject) filteredList;
}
FilterResults filterResults = new FilterResults();
filterResults.values = room;

return filterResults;

      }

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

}
mHomeSectionsPagerAdapter = new 
HomeSectionsPagerAdapter(getSupportFragmentManager());
    roomCardRecyclerViewAdapter = new RoomCardRecyclerViewAdapter(this, 
mRooms);
    mRooms = new ArrayList<>();
    // Set up the ViewPager with the sections adapter.
    mViewPager = findViewById(R.id.container);
    mViewPager.setAdapter(mHomeSectionsPagerAdapter);

    
     
    

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    final ParseQuery<ParseUser> query = ParseUser.getQuery();

    
    //get the search view and set the searchable configuration
    SearchManager searchManager = (SearchManager) 
getSystemService(Context.SEARCH_SERVICE);
   
    MenuItem item = menu.findItem(R.id.search);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);

    //assumes the current activity is the searchable activity
    

searchView.setSearchableInfo(searchManager.getSearchableInfo
(getComponentName());

    searchView.setSubmitButtonEnabled(true);

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            roomCardRecyclerViewAdapter.getFilter().filter(query);
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            roomCardRecyclerViewAdapter.getFilter().filter(newText);
            return false;
        }
    });

    return true;
}


@Override
public boolean onSearchRequested() {

    //pauseSomeStuff();

    //roomCardRecyclerViewAdapter.getFilter().filter(query);
    return super.onSearchRequested();
}
List mRooms;
roomCardRecyclerViewAdapter = new RoomCardRecyclerViewAdapter(this, mRooms);
mRooms = new ArrayList<>();
mRooms = new ArrayList<>();
roomCardRecyclerViewAdapter = new RoomCardRecyclerViewAdapter(this, mRooms);