列表视图中的数据无法在回收器视图中设置。

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

在这里,我首先将我所有的数据存储到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;
    }
android android-studio android-fragments android-recyclerview recycler-adapter
1个回答
0
投票

这是因为你没有给你的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();

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