![](/img/trans.png)
[英]how to pass Position wise object data one activity to another using recyclerview and databse in android
[英]Android RecyclerView pass position is always the last one
美好的一天,我想將 position 從RecyclerView
的適配器傳遞到MainActivity
,所以我設計了一個接口:
在 RecyclerViewAdapter 中:
publuc interface recyclerViewAdapterListener{
void onDeviceConnect(data, position)
}
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
//here I call onDeviceConnect
holder.button.setOnClickListener(new View.OnClickListener(){
public void onClick(View view) {
listener.onDeviceConnect(data, position);
}
在 MainActicity 中:
private int pos;
public void onDeviceConnect(data,position){
pos = position;
}
我知道問題是pos = position
,那總是會得到最后一個 position。
但我需要來自RecyclerView
的數據和 position ,因為當我的設備連接時,
它將更改RecyclerView
的項目。
例如:(在 MainActivity 中)
case BleService.ACTION_NOTIFY_ON: //here my device is connected.
updateStatus(mac,status); //update status
private void updateStatus(mac,status){
Adapter.updateItem(data, pos); //call adapter's item
}
例如:(在 RecyclerViewAdapter 中)
public void updateItem(data,pos){
if (dataList.size() != 0){
dataList.set(pos, data);
notifyItemChanged(pos);
}
有什么好主意可以解決嗎,謝謝。
在 MainActicity 中:
`
public class MainActicity extends AppCompatActivity implements YourRecyleAdaptor.recyclerViewAdapterListener{
private int pos;
@Override
public void onDeviceConnect(data,position){
pos = position;
}
`
嘗試用holder.getAdapterPosition()
替換position
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
//here I call onDeviceConnect
holder.button.setOnClickListener(new View.OnClickListener(){
public void onClick(View view) {
listener.onDeviceConnect(data, holder.getAdapterPosition());
}
或者也可以在ViewHolder
setOnClickListener
的構造函數中設置OnClickListener
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.