Как извлечь расширяемый список для открытия определенного фрагмента - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь реализовать в моем приложении расширяемый список просмотра, чтобы при нажатии на просмотр списка он выбирал фрагмент из следующего действия. Как это можно реализовать в приложении.

Это мой первый адаптер расширяемого списка.

    public class ExpandableListAdapter extends BaseExpandableListAdapter {

    private Context context;
    private List<String> listDataHeader;
    private HashMap<String,List<String>> listHashMap;

    public ExpandableListAdapter(Context context, List<String> listDataHeader, HashMap<String, List<String>> listHashMap) {
        this.context = context;
        this.listDataHeader = listDataHeader;
        this.listHashMap = listHashMap;
    }

    @Override
    public int getGroupCount() {
        return listDataHeader.size();
    }

    @Override
    public int getChildrenCount(int i) {
        return listHashMap.get(listDataHeader.get(i)).size();
    }

    @Override
    public Object getGroup(int i) {
        return listDataHeader.get(i);
    }

    @Override
    public Object getChild(int i, int i1) {
        return listHashMap.get(listDataHeader.get(i)).get(i1); // i = Group Item, i1 = ChildItem
    }

    @Override
    public long getGroupId(int i) {
        return i;
    }

    @Override
    public long getChildId(int i, int i1) {
        return i1;
    }

    @Override
    public boolean hasStableIds() {
        return false;
    }

    @Override
    public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
        String headerTitle = (String) getGroup(i);
        if (view == null) {
            LayoutInflater inflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.list_group, null);
        }
        TextView lblListHeader = (TextView)view.findViewById(R.id.lblListHeader);
        lblListHeader.setTypeface(null, Typeface.BOLD);
        lblListHeader.setText(headerTitle);
        return view;
    }

    @Override
    public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
        final String childText = (String) getChild(i, i1);
        if (view == null) {
            LayoutInflater inflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.list_item, null);
        }

        TextView txtListChild = (TextView)view.findViewById(R.id.lblListItem);
        txtListChild.setText(childText);
        return view;
    }

    @Override
    public boolean isChildSelectable(int i, int i1) {
        return true;
    }
}

Это ExpandableListView. где я реализую список и настраиваю onclicklistener, и я также добавил putextra с помощью onclicklistener, который должен открыть фрагмент в следующем действии, по которому щелкает один из дочерних элементов в расширяемом списке

public class GeneralIndex extends Fragment {

    private ExpandableListView listView;
    private ExpandableListAdapter listAdapter;
    private List<String> listDataHeader;
    private HashMap<String, List<String>> listHash;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.general_index_activity,container,false);

        listView = (ExpandableListView) view.findViewById(R.id.lvExpand);
        initData();
        listAdapter = new ExpandableListAdapter(getContext(), listDataHeader, listHash);

listView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
            @Override
            public boolean onChildClick(ExpandableListView expandableListView, View view, int i, int i1, long l) {
                String generalIndex = (String) listView.getItemAtPosition(i).toString();
                Intent intent = new Intent(getActivity(), HymnActivity.class);
                intent.putExtra("pageNo", i);
                startActivity(intent);
                return false;
            }
        });

        listView.setAdapter(listAdapter);

        return view;
    }

    private void initData() {
        listDataHeader = new ArrayList<>();
        listHash = new HashMap<>();

        listDataHeader.add("A");
        listDataHeader.add("B");


        List<String> A = new ArrayList<>();
        A.add("A Day to come");
        A.add("Another Visit to the eastt");

        List<String> B = new ArrayList<>();
        B.add("Expandable List Viewdfd");
        B.add("Expandabsdfsdle List View");
        B.add("Expandable Listdfd View");
        B.add("Expandasfdfsble List View");

        listHash.put(listDataHeader.get(0),A);
        listHash.put(listDataHeader.get(1),B);
    }
}

В этом упражнении я хочу разделить лишнее, которое было передано из первого фрагмента. Как я могу это сделать?

 Bundle bundle = getIntent().getExtras();
    if(bundle != null) {
        String string = bundle.getString("pageNo");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...