我有一个Recycler视图,将显示onRun,但单击按钮后将为空,我想设置一个默认的Recycler视图

问题描述 投票:0回答:1

我目前有一个回收站视图,可以在Android Studio中使用纬度和经度。由于使用模拟器加载时,我传递了默认位置,因此会加载地图中该位置周围的区域。我还有一个微调器,可让您更改区域并在屏幕上的地图上显示标记。但是问题是当使用位置(在我的情况下是当前位置)(设置为默认模拟器位置Google Pixel San Francisco?)时,回收者视图显示为空,我想在Adapter类中编辑回收者视图,以便如果视图为空,则将文本设置为“您周围没有地方”,如果需要代码,请询问。

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {

        QuietPlace quietPlace = mQuietPlace.get(position);
        if (mQuietPlace.size() > 0){
            TextView textView = holder.titleTextView;
        textView.setText(quietPlace.getName());
        TextView textView2 = holder.noiseTextView;
        textView2.setText(quietPlace.getNoise());
        TextView textView3 = holder.distanceTextView;
        textView3.setText(String.valueOf(quietPlace.getDistance()));
        }
        else {
            TextView textViewEmpty = holder.titleTextView;
            textViewEmpty.setText("No Quiet Places near your location");
            TextView textViewEmpty2 = holder.noiseTextView;
            textViewEmpty2.setText(" ");
            TextView textViewEmpty3 = holder.distanceTextView;
            textViewEmpty3.setText(" ");
        }
    }

编辑:

package com.example.myapplication;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.List;

public class QuietPlaceAdapter extends RecyclerView.Adapter<QuietPlaceAdapter.ViewHolder> {

    private List<QuietPlace> mQuietPlace;

    public QuietPlaceAdapter(List<QuietPlace> quietPlaces)
    {
        mQuietPlace = quietPlaces;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        Context context = parent.getContext();
        LayoutInflater inflater = LayoutInflater.from(context);
        View quietPlaceView = inflater.inflate(R.layout.recycler_view, parent, false);
        ViewHolder viewHolder = new ViewHolder(quietPlaceView);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        QuietPlace quietPlace = mQuietPlace.get(position);

        TextView textView = holder.titleTextView;
        textView.setText(quietPlace.getName());
        TextView textView2 = holder.noiseTextView;
        textView2.setText(quietPlace.getNoise());
        TextView textView3 = holder.distanceTextView;
        textView3.setText(String.valueOf(quietPlace.getDistance()));
    }

    @Override
    public int getItemCount() {
        return mQuietPlace.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        public TextView titleTextView;
        public TextView noiseTextView;
        public TextView distanceTextView;
        public ViewHolder(View itemView) {
            super(itemView);

            titleTextView = (TextView) itemView.findViewById(R.id.quietPlaceTitle);
            noiseTextView = (TextView) itemView.findViewById(R.id.quietPlaceNoise);
            distanceTextView = (TextView) itemView.findViewById(R.id.quietPlaceDistance);
        }
    }

}
java android android-recyclerview
1个回答
0
投票

如果列表是动态的,则不要在构造函数中传递列表。

在适配器中添加此功能

public void setPanelList(List<QuietPlace> quietPlaces){

    mQuietPlace = quietPlaces;
    notifyDataSetChanged();
}

在活动中,当quietPlaces更改时,setPanelList(quietPlaces)。

quietPlaceAdapter.setPanelList(quietPlaces)

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.