如何更改自定义适配器中按钮单击时的按钮文本
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();
}
}
});
我有用于列表视图的自定义适配器,上面有按钮。
所以我想更改位置上特定项目的按钮单击时的按钮文本。
<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();
}
}
});