-1
私は5個のフラグメントを含むビューページャーでアクティビティを持っています。各フラグメントのレイアウトには、展開可能なリストビューが必要です。通常のリストビューを各フラグメントで使用すると、アプリケーションは正常に動作しますが、展開可能なリストビューを使用するとアプリケーションがクラッシュします。フラグメント内で展開可能なリストビューを使用するにはどうすればよいですか?フラグメント内の拡張可能リストビュー
私は5個のフラグメントを含むビューページャーでアクティビティを持っています。各フラグメントのレイアウトには、展開可能なリストビューが必要です。通常のリストビューを各フラグメントで使用すると、アプリケーションは正常に動作しますが、展開可能なリストビューを使用するとアプリケーションがクラッシュします。フラグメント内で展開可能なリストビューを使用するにはどうすればよいですか?フラグメント内の拡張可能リストビュー
クラッシュログを提供できますか?ログなし、解決策なし...
次のコードはクラッシュしません。 Fragment
内にはActivity
、fragment
のルートビューはExpandableListView
です。たぶんあなたを助けることができます。
private Map<String, List<String>> dataset = new HashMap<>();
private String[] parentList = new String[]{"first", "second", "third"};
private List<String> childrenList1 = new ArrayList<>();
private List<String> childrenList2 = new ArrayList<>();
private List<String> childrenList3 = new ArrayList<>();
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_expandable_listview, container, false);
}
private void initialData() {
childrenList1.add(parentList[0] + "-" + "first");
childrenList1.add(parentList[0] + "-" + "second");
childrenList1.add(parentList[0] + "-" + "third");
childrenList2.add(parentList[1] + "-" + "first");
childrenList2.add(parentList[1] + "-" + "second");
childrenList2.add(parentList[1] + "-" + "third");
childrenList3.add(parentList[2] + "-" + "first");
childrenList3.add(parentList[2] + "-" + "second");
childrenList3.add(parentList[2] + "-" + "third");
dataset.put(parentList[0], childrenList1);
dataset.put(parentList[1], childrenList2);
dataset.put(parentList[2], childrenList3);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initialData();
ExpandableListView expandableListView = (ExpandableListView) view;
expandableListView.setAdapter(new MyAdapter());
}
class MyAdapter extends BaseExpandableListAdapter {
@Override
public int getGroupCount() {
return dataset.size();
}
@Override
public int getChildrenCount(int i) {
return dataset.get(parentList[i]).size();
}
@Override
public Object getGroup(int i) {
return dataset.get(parentList[i]);
}
@Override
public Object getChild(int i, int i1) {
return dataset.get(parentList[i]).get(i1);
}
@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) {
if (view == null) {
view = View.inflate(getActivity(), R.layout.parent_item, null);
}
view.setTag(R.layout.parent_item, i);
view.setTag(R.layout.child_item, -1);
TextView text = (TextView) view.findViewById(R.id.parent_title);
text.setText(parentList[i]);
return view;
}
@Override
public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
if (view == null) {
view = View.inflate(getActivity(), R.layout.child_item, null);
}
view.setTag(R.layout.parent_item, i);
view.setTag(R.layout.child_item, i1);
TextView text = view.findViewById(R.id.child_title);
text.setText(dataset.get(parentList[i]).get(i1));
text.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getActivity(), "点到了内置的textview", Toast.LENGTH_SHORT).show();
}
});
return view;
}
@Override
public boolean isChildSelectable(int i, int i1) {
return false;
}
}
あなたのコードと適切なログを投稿しない限り、誰かがあなたを助けることができるとは思わない...このような不完全な質問については、あなたのコードにいくつかの問題があります。それを修正してください** ...可能であれば、コードとログを投稿してください。 –
これまでに何を試しましたか? –