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