ListView с множественной проблемой ToggleButtons - PullRequest
0 голосов
/ 19 апреля 2020

Я занимаюсь разработкой своего первого приложения и столкнулся с небольшим затруднением при работе с представлениями адаптера. Это задержало меня на несколько дней. Проблема в том, что у меня есть 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();

            }
        }); 
...