У меня есть пользовательский адаптер для списка, и у меня есть кнопка на этом.Как изменить текст кнопки при нажатии кнопки в пользовательском адаптере
поэтому я хочу изменить текст кнопки при нажатии кнопки для этого конкретного элемента в позиции.
<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;
}
Когда я нажать на кнопку текст кнопки не изменяя для этого конкретного элемента на этой позиции.
Как я могу изменить текст кнопки при нажатии кнопки для этого конкретного элемента в определенном положении?
И если вы используете '((Button) v)' внутри вашего прослушивателя кликов вместо 'holder.btnadd'? Поскольку 'holder.btnadd' изменяется, но' v' является правильным представлением, когда вы находитесь внутри 'onClick'. –
Я не получил его. можете ли вы подробнее объяснить? – deepak
Добавил это как ответ. –