0

我想讓視圖的只有一個項目是不可回收的,而不是整個視圖的。我該怎麼做? 我不希望btnSave可以回收,因爲它的狀態可能每行不同。如何讓單個項目的視圖不可回收

下面是我迄今所做的代碼:

public static class AlertViewHolder extends RecyclerView.ViewHolder { 
    TextView tvTitle, tvDescription; 
    Button btnLink, btnSave; 

    AlertViewHolder(View itemView) { 
     super(itemView); 
     tvTitle = (TextView) itemView.findViewById(R.id.tvTitle); 
     tvDescription = (TextView) itemView.findViewById(R.id.tvDescription); 
     btnLink = (Button) itemView.findViewById(R.id.btnLink); 
     btnSave = (Button) itemView.findViewById(R.id.btnSave); 

     btnLink.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(alerts.get(getAdapterposition()).getLink())); 
      context.startActivity(browserIntent); 
     } 
    }); 

     btnSave.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       onSaveClicked(view); 
      } 
     }); 

    this.setIsRecyclable(false); 
    } 

    void onSaveClicked(View view) { 
     DbHelper.getInstance(context).addSavedFeedRecord(alerts.get(getAdapterPosition())); 
     Snackbar.make(view, "Item Saved", Snackbar.LENGTH_LONG) 
       .setAction("UNDO", null).show(); 
     view.setEnabled(false); 
    } 
} 

或另一種方式是:

@Override 
public void onBindViewHolder(AlertViewHolder alertViewHolder, final int i) { 
    alertViewHolder.setIsRecyclable(false); 
    alertViewHolder.tvDescription.setText(alerts.get(i).getDesc()); 

} 
+0

作爲比較新的Android開發,我不知道人們是否應該甚至試圖做到這一點(性能?)。你能告訴我關於這個問題的一個用例嗎? – 0X0nosugar

+1

http://stackoverflow.com/a/13165506/2079692 –

+1

http://stackoverflow.com/a/19289890/2079692 –

回答

1

你可以用

this.setIsRecyclable(假);

如果(爲getPosition()= item_position)

相關問題