我想只让一个视图项不可循环使用,而不是整个视图。我怎么能这样做?
我不希望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 :(得分:2)
你可以包装
this.setIsRecyclable(假);
带
如果(为getPosition()= item_position)