在这里,我首先将我所有的数据存储到Sqlite中,然后我想在一个回收器视图中显示所有的数据,所以我在这里使用Fragment,其中有一个回收器视图,同时调试我从Sqlite中获取数据,但当它来到适配器中时,它显示的mList大小为0,不知道为什么,但在Sqlite的getAllData方法中,我得到mList大小为3,但也不能查看任何数据。
我的适配器类
public class ItemAdp extends RecyclerView.Adapter<ItemAdp.MyViewHolder> {
List<ProductItem> mList;
Context context;
String Base_URL;
public ItemAdp(List<ProductItem> mList, Context context) {
this.mList = mList;
this.context = context;
}
public class MyViewHolder extends RecyclerView.ViewHolder {
ImageView img_icon;
TextView txtTitle, group_Name;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
img_icon=itemView.findViewById(R.id.img_icon);
txtTitle=itemView.findViewById(R.id.txtTitle);
group_Name=itemView.findViewById(R.id.group_Name);
}
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(context);
View view = layoutInflater.inflate(R.layout.item_custome, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
ProductItem datum = mList.get(position);
// Glide.with(context).load(Base_URL + "/" + datum.getArticleImage()).thumbnail(Glide.with(context).load(R.drawable.ezgifresize)).into(holder.img_icon);
holder.txtTitle.setText("" + datum.getArticleName());
holder.group_Name.setText("" + datum.getGroupName());
}
@Override
public int getItemCount() {
return mList.size();
}
我的碎片
public class ItemListFragment extends Fragment {
RecyclerView myRecyclerView;
List<ProductItem> mlist;
MobexInAppDb mobexInAppDb;
ItemAdp itemAdp;
public ItemListFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_home, container, false);
mobexInAppDb = new MobexInAppDb(getContext());
myRecyclerView = view.findViewById(R.id.my_recycler_view);
itemAdp=new ItemAdp(mlist,getContext());
myRecyclerView.setAdapter(itemAdp);
myRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
return view;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mobexInAppDb = new MobexInAppDb(getContext());
mlist = new ArrayList<>();
mobexInAppDb.getAllData();
}
}
我的方法从Sqlite中获取数据。
public List<ProductItem> getAllData() {
List<ProductItem> productItems = new ArrayList<>();
Cursor cursor = null;
SQLiteDatabase database = this.getReadableDatabase();
cursor = database.rawQuery("SELECT * FROM ProductNew", null);
if (cursor.getCount() != 0) {
while (cursor.moveToNext()) {
ProductItem productItem = new ProductItem(cursor.getString(1), cursor.getString(2), cursor.getString(4), cursor.getString(5), cursor.getString(6), cursor.getString(8));
productItems.add(productItem);
}
}
cursor.close();
return productItems;
}
这是因为你没有给你的arraylist(mlist)分配数据。
在你的onCreate方法中,复制这个。
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mobexInAppDb = new MobexInAppDb(getContext());
mlist = new ArrayList<>();
// pass result to mlist
mlist = mobexInAppDb.getAllData();
}