无法清除ExpandableListView

问题描述

昨天我问了有关简单ListView的类似问题,但是我对Expandable遇到了新的麻烦。 我想清除我的expListView。我通过清除放置在适配器中的List和HashMap来做到这一点

if(tournamentsAnswer.size() == 0){
...
} else {
       listDataHeader.clear();
       listDataChild.clear();
       listadapter.notifyDataSetChanged();
}

但是我的列表视图保持不变。问题是否与参考相关?我检查了一下,似乎一切都很好。我应该改变什么? 这是完整的代码

public class TournamentsFragment extends Fragment {
    TournamentParameters findTournament(String name,ArrayList<TournamentParameters> tournamentsList){
        for(TournamentParameters i : tournamentsList){
            if (name.equals(i.getName())){
                return i;
            }
        }
        return null;
    }
 
    private Tournamentsviewmodel mviewmodel;
 
    public static TournamentsFragment newInstance() {
        return new TournamentsFragment();
    }
    static expandablelistadapter listadapter;
    static List<String> listDataHeader;
    static HashMap<String,List<String>> listDataChild;
    Fragment fragment = new TournamentFiltersFragment();
    private void showTournamentsFragment() {
        FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
        if (!fragment.isAdded()) {
 
            transaction.add(R.id.tournamentsframe,fragment,"filter");
        }
        transaction.addToBackStack(null);
        transaction.commit();
    }
 
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
        List<String> finalratingList = new ArrayList<String>();
        final View view = inflater.inflate(R.layout.tournaments_fragment,container,false);
        Database base = new Database();
        base.readTournaments(new Database.TournamentsCallback() {
            @Override
            public void onCallback(ArrayList<TournamentParameters> tournamentsList,ArrayList<String> tournamentsNames,ArrayList<String> tournamentsAnswer,ArrayList<String> ratingAnswer,ArrayList<PlayerParameters> playersList) {
                listDataHeader = tournamentsNames;
                Collections.sort(listDataHeader);
                List<String> editableListDataHeader  = new ArrayList<String>(listDataHeader);
                listDataChild = new HashMap<String,List<String>>();
                HashMap<String,ArrayList<String>> playerInfo = new HashMap<String,ArrayList<String>>();
                HashMap<String,Integer> rating = new HashMap<String,Integer>();
                for (TournamentParameters j : tournamentsList) {
 
 
                    ArrayList<String> infoList = new ArrayList<String>();
                    if (j.getType().equals("de")){
                        infoList.add("Тип: " + "Double Elimination");
                    }
                    else if (j.getType().equals("se3")){
                        infoList.add("Тип: " + "Single Elimination (матч за 3е место)");
                    }
                    else{
                        infoList.add("Тип: " + "Single Elimination");
                    }
                    infoList.add("Вес: " + j.getWeight());
                    for (String place : j.getPlaces().keySet()){
                        infoList.add(place + " место: " + j.getPlaces().get(place).toString()
                                .substring(1,j.getPlaces().get(place).toString().length() - 1)
                        + " — " + j.getPoints(place) * Integer.parseInt(j.getWeight()) + " очков");
                    }
                    Comparator<String> comp = new Compare();
                    Collections.sort(infoList.subList(2,infoList.size()),comp);
                    playerInfo.put(j.getName(),infoList);
                }
 
 
                for (int i = 0; i < listDataHeader.size(); i++){
                    listDataChild.put(listDataHeader.get(i),playerInfo.get(listDataHeader.get(i)));
                }
                ExpandableListView expListView = view.findViewById(R.id.lvExp);
                Button filtersTV = getActivity().findViewById(R.id.tournamentsFiltersTV);
 
                if (tournamentsAnswer.size() == 0) {
                    listadapter = new expandablelistadapter(getActivity(),listDataHeader,listDataChild);
                    listadapter.notifyDataSetChanged();
                    expListView.setAdapter(listadapter);
                    expListView.setonGroupClickListener(new ExpandableListView.OnGroupClickListener() {
 
                        @Override
                        public boolean onGroupClick(ExpandableListView parent,View v,int groupPosition,long id) {
                            // Toast.makeText(getApplicationContext(),// "Group Clicked " + listDataHeader.get(groupPosition),// Toast.LENGTH_SHORT).show();
                            return false;
                        }
                    });
                    listadapter.notifyDataSetChanged();
                }
                else {
                    listDataHeader.clear();
                    listDataChild.clear();
                    listadapter.notifyDataSetChanged();
               }
                filtersTV.setonClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        showTournamentsFragment();
 
                    }
                });
 
            }
        });
 
        return view;
    }
 
    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mviewmodel = viewmodelProviders.of(this).get(Tournamentsviewmodel.class);
        // Todo: Use the viewmodel
    }
 
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...