簡體   English   中英

無法將 Recycleview position 傳遞給另一個活動

[英]Unable to pass Recycleview position to another activity

我正在構建一個費用跟蹤器應用程序。 我陷入了無法將適配器 position 傳遞給另一個活動的問題。 更困擾我的是我能夠將我的 id 從適配器傳遞到活動,但無法傳遞 position。 我粘貼了下面的代碼以便更好地理解。 有人可以幫我嗎?

public void onBindViewHolder(@NonNull UltAdapter.MyViewHolder holder, int position) {
        TransactionModel MyModel = myViewsList.get(position);
        Log.d("checkTag -> ", MyModel.getType());
        holder.amount.setText(MyModel.getAmount());
        if(Objects.equals(MyModel.getType(), "Income"))
        {
            holder.amount.setTextColor(Color.GREEN);
            holder.priority.setBackgroundResource(R.drawable.mark);
        }
        else
        {
            holder.amount.setTextColor(Color.RED);
            holder.priority.setBackgroundResource(R.drawable.redmark);
        }
        final int pos = holder.getAdapterPosition();
        holder.date.setText(MyModel.getDate());
        holder.note.setText(MyModel.getNote());
        holder.Btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(context,Update_transaction.class);
                i.putExtra("key",myViewsList.get(pos).getId());
                i.putExtra("pos",pos);
                context.startActivity(i);

            }
        });
    }

我已經看到您之前的問題,您正在檢索這樣的數據:

Bundle bundle = getIntent().getExtras();
    Update_db = new DataSaver(this);
    if(bundle != null)
    {
        id = bundle.getString("key");
        pos = bundle.getString("pos");
        Toast.makeText(this, "pos : " + pos, Toast.LENGTH_SHORT).show();
    }

相反,您是否嘗試過獲取這樣的數據:

int pos = getIntent().getIntExtra("pos", -1 /* default value */)

對於key ,我假設您的密鑰是一個字符串

String key = getIntent().getStringExtra("key");

我之前遇到過這個問題,position 的類型是一個 Int,在檢索它時假設它是一個字符串,所以在傳遞數據時有一個解決方案:

            Intent i = new Intent(context,Update_transaction.class);
            i.putExtra("key",myViewsList.get(pos).getId());
            i.putExtra("pos",String.valueOf(pos));
            context.startActivity(i);

在檢索數據時:

            int pos;
            id = bundle.getString("key");
            pos = Integer.parseInt(bundle.getString("pos"));

暫無
暫無

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

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