正在设置ListView



我在列表视图和微调器方面遇到了问题。我使用列表视图显示项目,并使用微调器在类别之间进行筛选,使用按钮刷新视图。我的问题是,在选择不同的类别后,它不会更改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. 将微调器设置从"menuViewingMethod(("重新定位到"onCreateView(("。这可能是每次触发"menuViewingMethod(("时微调器重置为0的原因。

  2. 在"menuViewingMethod(("中,使"menuArrayList"one_answers"arrayAdapter"类变为变量,然后用新内容重新加载列表。

    String[]沙拉=新String[]{"沙拉1"、"沙拉2"、"萨拉丁3"};menuArrayList.clear((;menuArrayList.addAll(Arrays.asList(沙拉((;arrayAdapter.notifyDataSetChanged((;

最新更新