2017-09-08 10 views
-1

私は5個のフラグメントを含むビューページャーでアクティビティを持っています。各フラグメントのレイアウトには、展開可能なリストビューが必要です。通常のリストビューを各フラグメントで使用すると、アプリケーションは正常に動作しますが、展開可能なリストビューを使用するとアプリケーションがクラッシュします。フラグメント内で展開可能なリストビューを使用するにはどうすればよいですか?フラグメント内の拡張可能リストビュー

+2

あなたのコードと適切なログを投稿しない限り、誰かがあなたを助けることができるとは思わない...このような不完全な質問については、あなたのコードにいくつかの問題があります。それを修正してください** ...可能であれば、コードとログを投稿してください。 –

+1

これまでに何を試しましたか? –

答えて

0

クラッシュログを提供できますか?ログなし、解決策なし...

次のコードはクラッシュしません。 Fragment内にはActivityfragmentのルートビューは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; 
    } 
} 
関連する問題