2016-11-15 61 views
1

有沒有辦法讓特定RecyclerView基礎項目的ViewHolder僅在給定的位置?如何獲得Recyclerview特定項目的ViewHolder

類似getViewHolder(position);

public MyViewHolder getViewHolder(int position){ 
    MyViewHolder holder = null; 
    /** 
     Find ViewHolder here... 
      If Found initialize the holder.. 
       holder = ? 
    **/ 
    return holder; 
} 

此功能是在我的適配器類,我正在尋找一種方式來獲得一個項目的ViewHolder這樣我就可以改變我的我的自定義項eg. holder.setText("Hello World");的視圖的一個價值,我的股票,我找不到辦法做到這一點,我試圖搜索,但沒有人幫助我。

有人嗎?

+0

請評論投票的原因。 – Polar

+0

這可能會幫助你爲位置特定的視圖:http://stackoverflow.com/a/40240599/1263362 – Sayem

+0

@Sayem - 謝謝你的鏈接,但你能解釋它是如何幫助我的問題嗎?謝謝。 – Polar

回答

0

這不是ViewHolder的工作方式。 ViewHolder只是你製作的佈局的持有者。 ViewHolder可以自動重用,所以如果你有100個項目,android不會創建100個ViewHolders,而不是僅僅在屏幕上可見的一些ViewHolders。如果您滾動RecyclerView,不可見項目的ViewHolder將被重新使用。你只需要改變的是對方法onBindViewHolder

這裏自動傳遞的ViewHolder的數據是例如

@Override 
public void onBindViewHolder(final ViewHolder holder, int position) { 
    holder.textViewTitle.setText(data.get(position).title); 
    holder.textViewContent.setText(data.get(position).content); 

    Context context = holder.button.getContext();  
    holder.button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(context, "you clicked the button!", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 
+1

在這裏,我只是想確保人們不會在Android中做一個壞習慣。所以,在你投降之前,你應該瞭解提問者的問題並創建一個更好的方法。 – HendraWD

0
public static RecyclerView.ViewHolder getViewHolder(View view) { 
    RecyclerView rv = getParentRecyclerView(view); 
    View rvChild = getParentViewHolderItemView(view); 

    if (rv != null && rvChild != null) { 
     return rv.getChildViewHolder(rvChild); 
    } else { 
     return null; 
    } 
} 

我希望這會幫助你。 供您參考,您也可以訪問此鏈接。

http://www.programcreek.com/java-api-examples/index.php?class=android.support.v7.widget.RecyclerView&method=getChildViewHolder

+0

無法解析'getParentRecyclerView'和'getParentViewHolderItemView'方法。基於你的代碼,我怎麼知道返回的viewHolder是我正在尋找的那個? – Polar

+0

您正在將方法中的視圖傳遞給獲得尊重的視圖持有者。 –

+0

但getParentRecyclerView和getParentViewHolderItemView無法解析。 – Polar

相關問題