RecyclerView数据未在Android Studio中显示

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

我有RecyclerView,但其中未显示数据。我尝试使用notifydatasetchange(),但没有帮助,RecyclerView也没有更新。

这是我的代码:

适配器类

public class Price_Adapter extends RecyclerView.Adapter<Price_Adapter.viewHolder> {

    private Context mctx;
    private List<Price_Model>modelList;

    public Price_Adapter(Context mctx, List<Price_Model> modelList) {
        this.mctx = mctx;
        this.modelList = modelList;
    }

    @NonNull
    @Override
    public viewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(mctx);
        View view = inflater.inflate(R.layout.pricelist_row,parent,false);
        return new viewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull viewHolder holder, int position) {
        Price_Model price_model = modelList.get(position);
        holder.item.setText(price_model.getItem());
        holder.price.setText(price_model.getPrice());

    }

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

    public class viewHolder extends RecyclerView.ViewHolder {

        private TextView item,price;
        private CheckBox checkBox;

        public viewHolder(@NonNull View itemView) {
            super(itemView);

            item = itemView.findViewById(R.id.item);
            price = itemView.findViewById(R.id.price);
            checkBox = itemView.findViewById(R.id.checkBox);

        }
    }
}

模型类别:

public class Price_Model {

    private String item, price;

    public Price_Model() {
    }

    public Price_Model(String item, String price) {
        this.item = item;
        this.price = price;
    }

    public String getItem() {
        return item;
    }

    public void setItem(String item) {
        this.item = item;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }
}

主要代码:

    pricelist_recyclerView = view.findViewById(R.id.recyclerView_pricelist);
    pricelist_recyclerView.setHasFixedSize(true);
    pricelist_recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(),RecyclerView.VERTICAL,false));
    pricelist_recyclerView.setAdapter(price_adapter);
    priceModelList = new ArrayList<>();
    price_adapter = new Price_Adapter(getActivity(),priceModelList);

    priceModelList.add(new Price_Model("rytdfy","fhf"));
    priceModelList.add(new Price_Model("rytdfy","fhf"));
    priceModelList.add(new Price_Model("rytdfy","fhf"));
    priceModelList.add(new Price_Model("rytdfy","fhf"));

我在Logcat中收到此错误:

2020-05-23 14:53:33.238 1736-1736 /? E / chooseup.barbe:在runtime_flags中设置的未知位:0x280002020-05-23 14:53:34.996 1736-1736 / com.chooseup.barber E / ANR_LOG:>>> msg的执行时间太长2020-05-23 14:53:34.996 1736-1736 / com.chooseup.barber E / ANR_LOG:阻止的味精= {当= -1s637ms什么= 110目标= android.app.ActivityThread $ H obj = AppBindData {appInfo = ApplicationInfo {d5a0e0e com.chooseup.barber}}},费用= 1636毫秒2020-05-23 14:53:34.996 1736-1736 / com.chooseup.barber E / ANR_LOG:>>>当前消息列表为:2020-05-23 14:53:35.005 1736-1736 / com.chooseup.barber E / ANR_LOG:当前msg <1> = {当= -1s636ms what = 0 target = android.app.ActivityThread $ H callback = com。 android.internal.util.function.pooled.PooledLambdaImpl}2020-05-23 14:53:35.005 1736-1736 / com.chooseup.barber E / ANR_LOG:当前msg <2> = {当= -587ms时== 0 target = android.app.ActivityThread $ H callback = com。 android.internal.util.function.pooled.PooledLambdaImpl}2020-05-23 14:53:35.005 1736-1736 / com.chooseup.barber E / ANR_LOG:>>>当前的味精倾销<<<2020-05-23 14:53:35.007 1736-2486 / com.chooseup.barber E / Perf:无法获取文件列表com.chooseup.barber2020-05-23 14:53:35.008 1736-2486 / com.chooseup.barber E / Perf:getFolderSize():Exception_1 = java.lang.NullPointerException:尝试获取空数组的长度2020-05-23 14:53:35.009 1736-2486 / com.chooseup.barber E / Perf:无法获取文件列表com.chooseup.barber2020-05-23 14:53:35.009 1736-2486 / com.chooseup.barber E / Perf:getFolderSize():Exception_1 = java.lang.NullPointerException:尝试获取空数组的长度

android android-studio android-recyclerview recycler-adapter
1个回答
0
投票

否,您没有调用notifyDataSetChanged()

public Price_Adapter(Context mctx, List<Price_Model> modelList) {
    this.mctx = mctx;
    this.modelList = modelList;
    this.notifyDataSetChanged(); // should be present here
}

此外,在设置列表的值之后,您应该初始化适配器。

更改此代码

    pricelist_recyclerView = view.findViewById(R.id.recyclerView_pricelist);
    pricelist_recyclerView.setHasFixedSize(true);
    pricelist_recyclerView.setLayoutManager(new 
  LinearLayoutManager(getActivity(),RecyclerView.VERTICAL,false));
    pricelist_recyclerView.setAdapter(price_adapter);
    priceModelList = new ArrayList<>();
    price_adapter = new Price_Adapter(getActivity(),priceModelList);

    priceModelList.add(new Price_Model("rytdfy","fhf"));
    priceModelList.add(new Price_Model("rytdfy","fhf"));
    priceModelList.add(new Price_Model("rytdfy","fhf"));
    priceModelList.add(new Price_Model("rytdfy","fhf"));

为此

pricelist_recyclerView = view.findViewById(R.id.recyclerView_pricelist);
pricelist_recyclerView.setHasFixedSize(true);
pricelist_recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(),RecyclerView.VERTICAL,false));

priceModelList = new ArrayList<>();
priceModelList.add(new Price_Model("rytdfy","fhf"));
priceModelList.add(new Price_Model("rytdfy","fhf"));
priceModelList.add(new Price_Model("rytdfy","fhf"));
priceModelList.add(new Price_Model("rytdfy","fhf"));
// this should be intialized here
price_adapter = new Price_Adapter(getActivity(),priceModelList);
pricelist_recyclerView.setAdapter(price_adapter);
© www.soinside.com 2019 - 2024. All rights reserved.