如何更改自定义适配器中按钮单击时的按钮文本

How to change the button text on button click in custom adapter

我有用于列表视图的自定义适配器,上面有按钮。

所以我想更改位置上特定项目的按钮单击时的按钮文本。

<LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        >

        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />

    </LinearLayout>

    <Button
        android:id="@+id/btnadd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ADD"/>

我的自定义适配器:

static class ViewHolder {
    public TextView name;
    public Button btnadd;
}

@Override
public View getView(final int position, final View convertView,
                    ViewGroup parent) {
    final ViewHolder holder;
    View v = convertView;

    if (v == null) {
        final LayoutInflater vi = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.row_brandselected, null);
        holder = new ViewHolder();

        holder.name = (TextView) v.findViewById(R.id.name);


        holder.btnadd = (Button) v.findViewById(R.id.btnadd);

        v.setTag(holder);
    } else {
        holder = (ViewHolder) v.getTag();
    }

    UserName mUserNrand = values.get(position);

    holder.name.setText(mUserBrand.getName().toString());



    holder.btnadd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if(holder.btnadd.getText().toString() == "ADD"){

                holder.btnadd.setText("ADDED");
                notifyDataSetChanged();

            }





        }
    });

    return v;
}

当我点击按钮时,那个位置上的那个特定项目的按钮文本没有改变。

如何在特定位置为特定项目更改按钮单击时的按钮文本?

我认为您应该像这样更新您的 OnClick: 使用 .equals 比较字符串,否则你在比较对象。

使用 Button btnadd = (Button)v; 确保您使用的是被点击的视图,此视图作为参数提供给 onClick 函数,因此始终是您所期望的。

holder.btnadd.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Button btnadd = (Button)v;
        if(btnadd.getText().toString().equals("ADD") ){
            btnfollow.setText("ADDED");
            notifyDataSetChanged();
        }
    }
});