Настройка ListView - PullRequest
       3

Настройка ListView

0 голосов
/ 06 марта 2020

У меня проблемы с просмотром списка и блеснами. Я использую представление списка для отображения элементов и вращающийся элемент для фильтрации между категориями и кнопку для обновления sh представления. Моя проблема в том, что после выбора другой категории он не меняет listView и возвращает спиннер в исходную категорию. Я пытался использовать .clear() и onClickListener(), но моя проблема сохраняется. Есть ли способ заставить спиннер менять элементы в listView после нажатия кнопки?

import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Spinner;
import androidx.fragment.app.Fragment;


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import static android.content.ContentValues.TAG;

public class MenuFragment extends Fragment {

   private ListView menuList;
   private Spinner menuSpinner;
   private Button buttonRefresh;
   //private ArrayList<Menu> menuArrayList ;

   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
       super.onCreateView(inflater, container, savedInstanceState);
       View rootView = inflater.inflate(R.layout.fragment_menu, container, false);
       Log.i(TAG, "onCreateView of MenuFragment has loaded");

       //menuApps=(TextView)rootView.findViewById(R.id.menuApps);
       //menuTitle=(TextView)rootView.findViewById(R.id.menuTitle);
       menuList=(ListView)rootView.findViewById(R.id.menuList);
       menuSpinner=(Spinner)rootView.findViewById(R.id.menuSpinner);
       buttonRefresh=(Button)rootView.findViewById(R.id.buttonRefresh);

       //menuSpinner.setOnItemClickListener(new View.OnItemClickListener());
       //menuViewingMethod();

               buttonRefresh.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               menuViewingMethod();
               Log.i(TAG,"Refresh has been clicked");
           }
       });

       return rootView;
   }


  public ListView menuViewingMethod(){
      List<String> list=new ArrayList<>();
      list.add("Appetizers");
      list.add("Salads");
      list.add("Soups");
      list.add("Side Items");
      list.add("Entrees");
      list.add("Desserts");

      //sets up the spinner
      ArrayAdapter<String>dataAdapter= new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item,list);
      dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      menuSpinner.setAdapter(dataAdapter);


      String input= menuSpinner.getSelectedItem().toString();
      Log.d(TAG,input);
      if (input=="Appetizers"){
          //menuList.clear();
          /*menuList.setAdapter(arrayAdapter);
          menuArrayList.add("Gerst Sampler – $12.99");
          menuArrayList.add("Fried Oyster Basket – $11.99");
          menuArrayList.add("Gerst Ham Rolls - $11.99");
          menuArrayList.add("Bavarian Kraut Balls – $8.99");
          Log.i(TAG,"Spinner item Appetizers has been selected");*/
          String[] apps = new String[]{"Gerst Sampler – $12.99",
              "Fried Oyster Basket – $11.99",
              "Gerst Ham Rolls - $11.99",
              "Bavarian Kraut Balls – $8.99"};
           ArrayList<String> menuArrayList= new ArrayList<String>(Arrays.asList(apps));

           ArrayAdapter<String>arrayAdapter= new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1,menuArrayList);

          menuList.setAdapter(arrayAdapter);

      }
      //https://android--code.blogspot.com/2015/08/android-listview-add-items.html

      else if (input=="Salads"){
          /*menuArrayList.clear();
          menuList.setAdapter(arrayAdapter);
          menuArrayList.add("Salad1");*/


          String[] salads = new String[]{"Salad1", "Salad 2", "Salad 3"};

           List<String> menuArrayList= new ArrayList<String>(Arrays.asList(salads));

           ArrayAdapter<String>arrayAdapter= new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_2,menuArrayList);

          menuList.setAdapter(arrayAdapter);
          arrayAdapter.notifyDataSetChanged();
      }

      else if(input=="Soups"){
          /*menuList.setAdapter(arrayAdapter);
          menuArrayList.clear();*/
          String[] soups = new String[] {"Soup 1", "Soup 2", "Soup 3"};

           List<String> menuArrayList= new ArrayList<String>(Arrays.asList(soups));

           ArrayAdapter<String>arrayAdapter= new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1,menuArrayList);

          menuArrayList.clear();

          menuList.setAdapter(arrayAdapter);
          arrayAdapter.notifyDataSetChanged();
      }



      String[] apps = new String[]{"Gerst Sampler – $12.99",
              "Fried Oyster Basket – $11.99",
              "Gerst Ham Rolls - $11.99",
              "Bavarian Kraut Balls – $8.99"};
       List<String> menuArrayList= new ArrayList<String>(Arrays.asList(apps));

       ArrayAdapter<String>arrayAdapter= new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1,menuArrayList);

      menuList.setAdapter(arrayAdapter);



     // menuSpinner.setOnTouchListener((View.OnTouchListener) this);

       arrayAdapter.notifyDataSetChanged();

      return menuList;
  }

}

1 Ответ

0 голосов
/ 07 марта 2020

Предполагается две вещи:

  1. Переместите настройку спиннера из меню menuViewingMethod () в onCreateView (). Вероятно, это причина того, что ваш спиннер сбрасывается в 0 каждый раз, когда срабатывает menuViewingMethod ().

  2. В menuViewingMethod () создайте классы menuArrayList и arrayAdapter вместо переменной и перезагрузите список с новым содержимым.

    String [] salads = new String [] {"Salad1", "Salad 2", "Salad 3"}; menuArrayList.clear (); menuArrayList.addAll (Arrays.asList (салаты)); arrayAdapter.notifyDataSetChanged ();

...