【发布时间】:2020-09-29 16:16:02
【问题描述】:
在这里,我首先将我的所有数据存储到 Sqlite,然后我想在回收站视图中显示来自 sqlite 的所有数据,所以我在这里使用 Fragment,其中在调试从 sqlite 获取数据时有一个回收站视图,但是当它在适配器中显示 mList 大小为 0 不知道为什么,但是在 Sqlite m 的 getAllData 方法中,mList 大小为 3,但 m 也无法查看任何数据。
我的适配器类
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;
}
【问题讨论】:
标签: android android-studio android-fragments android-recyclerview