簡體   English   中英

recyclerview 僅顯示單擊項目意圖的最后一項

[英]recyclerview shows only last item on click an item intent

我正在制作一個回收器視圖來顯示 SQLite 數據,包括 1blob、整數主鍵自動增量和 3string 值,在回收器視圖中帶有卡片視圖。 我已將編輯按鈕放在卡片視圖中,以便用戶可以單擊編輯按鈕並編輯該 SQLite 行的詳細信息。 這是我的回收器視圖適配器類,然后單擊任何卡片上的編輯按鈕,我使用該卡片中的意圖數據對另一個活動進行了意圖。

但我的問題是當點擊任何卡片項目時,它只顯示最后一個項目作為意圖。 我覺得我的代碼沒問題

這是我的回收器適配器類

public class RvadapterMyItems extends RecyclerView.Adapter <RvadapterMyItems.MyViewHolder> {

   private Context context;
   Activity activity;
   MyDatabaseHelper myDB;
   InterstitialAd interstitialAd;
   String myitemid, myitemname, myitemprice, myiteminstock, currencystring;
   SharedPreferences share2;
    private static final int EDIT_MY_ITEM = 111;
    byte[] bytes;

   private ArrayList arid, armyitempic, armyitemname, armyitemprice, armyiteminstock;
     int position;
    RvadapterMyItems(Activity activity, Context context, ArrayList arid, ArrayList armyitempic, ArrayList armyitemname, ArrayList armyitemprice, ArrayList armyiteminstock){
        this.activity = activity;
        this.context = context;
        this.arid = arid;
       this.armyitempic = armyitempic;
       this.armyitemname = armyitemname;
       this.armyitemprice = armyitemprice;
       this.armyiteminstock = armyiteminstock;
    }

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



    @SuppressLint("SetTextI18n")
    @Override
    public void onBindViewHolder(@NonNull  MyViewHolder holder, int position) {
       
 share2 = context.getSharedPreferences("shopinfo", MODE_PRIVATE);
        if(share2.contains("currency")){
            currencystring = share2.getString("currency", "");
            assert currencystring != null;
            if(currencystring.equals("No")){
                currencystring = "";
            }
        }else{
            currencystring = "";
        }
            myitemid = String.valueOf(arid.get(position));
            myitemname = String.valueOf(armyitemname.get(position));
            myitemprice = String.valueOf(armyitemprice.get(position)+ " "+ currencystring);
            myiteminstock = String.valueOf("Instock: "+ String.valueOf(armyiteminstock.get(position))+ " pcs");

        Bitmap bitmap = DbBitmapUtility.getImage((byte[]) armyitempic.get(position));
        holder.ivmyitem.setImageBitmap(bitmap);
        holder.tvmyitemname.setText(myitemid+ " / "+myitemname);
        holder.tvmyitemprice.setText(myitemprice);
        holder.tvmyiteminstock.setText(myiteminstock);
        bytes = DbBitmapUtility.getBytes(bitmap);

      holder.bteditmyitem.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
              Intent intent = new Intent(activity, AddMyItem.class);
                intent.putExtra("itemid",myitemid);
                intent.putExtra("itempic",bytes);
                intent.putExtra("itemname",myitemname);
                intent.putExtra("itemprice",myitemprice);
                intent.putExtra("iteminstock", myiteminstock);
                activity.startActivityForResult(intent,1);
            }
        });
    }
    @Override
    public int getItemCount() {
        return arid.size();
    }
    public static class MyViewHolder extends RecyclerView.ViewHolder {
        TextView tvmyitemname, tvmyitemprice, tvmyiteminstock;
        ImageView ivmyitem;
        ImageButton bteditmyitem;
        ConstraintLayout mainlayoutmyitem;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
         ivmyitem = itemView.findViewById(R.id.ivmyitem);
         tvmyitemname = itemView.findViewById(R.id.tvmyitemname);
         tvmyitemprice = itemView.findViewById(R.id.tvmyitemprice);
         tvmyiteminstock = itemView.findViewById(R.id.tvmyiteminstock);
         bteditmyitem = itemView.findViewById(R.id.bteditmyitem);
        }
    }
}

我找不到我的代碼發生了什么,請幫忙......

我通過更改按鈕的 onclicklistener 得到了答案

 holder.bteditmyitem.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
              Intent intent = new Intent(activity, AddMyItem.class);
                intent.putExtra("itemid",myitemid);
                intent.putExtra("itempic",bytes);
                intent.putExtra("itemname",myitemname);
                intent.putExtra("itemprice",myitemprice);
                intent.putExtra("iteminstock", myiteminstock);
                activity.startActivityForResult(intent,1);
            }
        });

 holder.bteditmyitem.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
             Intent intent = new Intent(activity, AddMyItem.class);
                intent.putExtra("itemid",String.valueOf(arid.get(position)));
                intent.putExtra("itempic",(byte[]) armyitempic.get(position));
                intent.putExtra("itemname",String.valueOf(armyitemname.get(position)));
                intent.putExtra("itemprice",String.valueOf(armyitemprice.get(position)));
               // intent.putExtra("iteminstock", myiteminstock);
                activity.startActivityForResult(intent,1);
            }
        });

我之前的意圖是錯誤的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM