Я занимаюсь разработкой своего первого приложения и столкнулся с небольшим затруднением при работе с представлениями адаптера. Это задержало меня на несколько дней. Проблема в том, что у меня есть ListView с адаптером и getView. Список содержит 9 переключателей, и только три из них могут быть переключены в любой момент времени. Я не могу на всю жизнь понять, как это сделать. Вот мой getView:
XML одного элемента.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ToggleButton
android:id="@+id/orientation_type"
android:backgroundTint="#FAFAFA"
style="?android:attr/borderlessButtonStyle"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawableRight="@drawable/check_purple"
android:gravity="left|center_vertical"
android:textColor="@drawable/check_box_text_color_purple"
android:textSize="16dp"
android:layoutDirection="rtl"
android:textAllCaps="false"
android:textOff=""
android:textOn=""
/>
</LinearLayout>
getView:
@NonNull
@Override
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
final String orientation = getItem(position).getOrientation();
LayoutInflater inflator = LayoutInflater.from(mContext);
convertView = inflator.inflate(mResource, parent, false);
final ToggleButton orientation_type = (ToggleButton)
convertView.findViewById(R.id.orientation_type);
orientation_type.setText(orientation);
return convertView;
}
Кроме того, я не могу использовать setOnItemClickListener в Основная деятельность почему-то. Вот основная деятельность:
list = new ArrayList<>();
orientation_item itemA= new orientation_item("A");
orientation_item itemB= new orientation_item("B");
orientation_item itemC= new orientation_item("C");
list.add(itemA);
list.add(itemB);
list.add(itemC);
adapter = new orientation_adapter(ChooseOrientation.this, R.layout.orientation_unit, list);
myList.setAdapter(adapter);
myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String itemPositon = String.valueOf(parent.getItemAtPosition(position));
Toast.makeText(ChooseOrientation.this, itemPositon, Toast.LENGTH_SHORT).show();
}
});