У меня есть представление списка, так и внутри каждого элемента списка У меня есть TextView
и Button
вроде этого:Как отключить все кнопки в пункты ListView, когда нажмите на кнопку, которая находится внутри ListView в андроида
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="@dimen/activity_horizontal_margin"
android:gravity="right">
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button_listItem_action"
android:layout_gravity="center"
android:layout_weight="1.2"
android:layout_marginRight="10dp"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Large Text"
android:id="@+id/textView_listItem_provider_address"
android:layout_gravity="center"
android:layout_weight="2"
android:layoutDirection="rtl"
android:textDirection="rtl"/>
</LinearLayout>
То, что я хотел бы сделать, это то, что я хочу установить прослушиватель кликов для каждой кнопки в каждом элементе списка, который отключает все остальные кнопки в других элементах списка в этом представлении списка. Я не знаю, должен ли я помещать этот слушатель в адаптер или нет, и я не знаю, как это сделать.
Вот мой адаптер:
public class ProviderListArrayAdapter extends ArrayAdapter<Provider> {
private static class ViewHolder{
TextView txtViewAddress;
Button buttonAction;
}
public ProviderListArrayAdapter(Context context, List<Provider> providers) {
super(context, -1, providers);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
final Provider provider = getItem(position);
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater layoutInflater = LayoutInflater.from(getContext());
convertView = layoutInflater.inflate(R.layout.list_item_provider_selector, parent, false);
viewHolder.txtViewAddress = (TextView) convertView.findViewById(R.id.textView_listItem_provider_address);
viewHolder.buttonAction = (Button) convertView.findViewById(R.id.button_listItem_action);
convertView.setTag(viewHolder);
}
else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.txtViewAddress.setText(provider.address);
viewHolder.buttonAction.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//don't know what to do
}
});
return convertView;
}
}
пс: класс провайдер имеет только строку текста для адреса.
Любая помощь будет серьезно было оценено заранее
Спасибо за ваш ответ – roostaamir