如何使单个视图项不可循环使用

时间:2015-10-02 05:26:34

标签: android performance android-recyclerview android-viewholder

我想只让一个视图项不可循环使用,而不是整个视图。我怎么能这样做? 我不希望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());

}

1 个答案:

答案 0 :(得分:2)

你可以包装

  

this.setIsRecyclable(假);

  

如果(为getPosition()= item_position)