私のアダプタでは、私は私のonClickListenerで定義されている値を変更することはできません。

ヤン:

私のアダプタで私が定義されている場合onClickListener私の前の文字列がonClickListenerに後でそれを変更できないという問題があります。私はそれを変更することはできませんが完璧に動作している目に見えないに設定することができます。

私は、画像をユーザーがクリックすると、第二の画像は、最初のものを置き換える必要がありますが、私はどちらかのImageViewの画像を変更することができない場合、私はそれは私が変更できない文字列と同じ問題があることを示唆していることを望みます。

任意の助けてくれてありがとう!


    private List<cards> listItems;
    private Context context;


    public arrayAdapter(List<cards> listItems, Context context) {
        this.listItems = listItems;
        this.context = context;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false);
        return new ViewHolder(v);
    }

    @SuppressLint("SetTextI18n")
    @Override
    public void onBindViewHolder(@NonNull final ViewHolder viewHolder, int i) {
        final cards currentItem = listItems.get(i);

        viewHolder.name.setText(currentItem.getName());
        viewHolder.comment.setText(currentItem.getComment());


        Picasso.get().load(currentItem.getProfileImageUrl()).into(viewHolder.image);

        viewHolder.name.setText("this work"); // here it works

        viewHolder.image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

               //Try this
                 currentItem.setName("New text");
                  notifyDataSetChanged();


               //viewHolder.name.setText("New text"); // this does not work
               // viewHolder.name.setVisibility(View.INVISIBLE); this does work
                Picasso.get().load(currentItem.getProfileImageUrl2()).into(viewHolder.image); // does not work
            }
        });

    }

    @Override
    public int getItemCount() {
        return listItems.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {

        TextView name, comment, howMany;
        public ImageView image;


        /**
         * @param itemView
         */
        ViewHolder(@NonNull View itemView) {
            super(itemView);
            name = (TextView) itemView.findViewById(R.id.name);
            image = (ImageView) itemView.findViewById(R.id.image);
            comment = (TextView) itemView.findViewById(R.id.commentText);
        }
    }


}
フレグランス:

その後、変更の特定の位置にあなたのリスト内の値とnotifyItemChanged(位置); あなたのクリックイベントでこれを書きます:

currentItem.setName("abc");
notifyItemChanged(position) 

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=233265&siteId=1