我有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:尝试获取空数组的长度
否,您没有调用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);