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());
}
作爲比較新的Android開發,我不知道人們是否應該甚至試圖做到這一點(性能?)。你能告訴我關於這個問題的一個用例嗎? – 0X0nosugar
http://stackoverflow.com/a/13165506/2079692 –
http://stackoverflow.com/a/19289890/2079692 –