2013-02-21 67 views
-1

嘿!SherlockListFragment中的ExpandableListView使用扩展BaseExpandableListAdapter的自定义适配器

我有这个设置。

MainActivity - 延伸SherlockFragmentActivity - 显示4个片段使用TabsAdapter

我有那些我需要这个选项卡之一的问题:

FragmentSkills - 延伸SherlockListFragment - 显示的一些的ExpandableListView现在硬编码测试字符串

========================================= ========================================= 问题: 我正在此时一个NullPointerException,我似乎无法旋转:

//我onActivityCreated()在FragmentSkills.java expandList =(ExpandableListView)getActivity()findViewById(R.id.ExpList内。 );

============================================== ====================================

我有点卡在这里,我不'不知道还有什么可以尝试的。我在类似的东西上找到了很多例子,但他们都只是展示了如何在正常的活动中做到这一点。由于我缺乏经验,这可能是我看不到的一些小东西,所以请看看并尝试帮我解决这个问题。

我是Android新手,请耐心等待。任何帮助表示赞赏。提前谢谢了。这是相关的代码。让我知道你是否需要看更多。 非常感谢!

fragment_skills.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <ExpandableListView android:id="@+id/ExpList" 
     android:layout_height="match_parent" 
     android:layout_width="match_parent" 
     android:groupIndicator="@null" /> 

</LinearLayout> 

list_item_skill_groups.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView android:id="@+id/tvSkillGroup" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="15dp" 
     android:textColor="@color/black" 
     android:textIsSelectable="false" 
     android:textSize="17sp" /> 

</LinearLayout> 

list_item_skills.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingTop="10dp" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    android:paddingBottom="10dp" 
    android:orientation="vertical" > 

    <TextView android:id="@+id/tvSkillTitle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textIsSelectable="false" 
     android:textSize="19sp" 
     android:textStyle="normal" 
     android:paddingBottom="4dp" /> 

</LinearLayout> 

FragmentSkills.java

public class FragmentSkills extends SherlockListFragment { 
    private ExpandableListView expandList; 
    private ArrayList<ExpandableSkillsGroup> expListItems; 
    private SkillsAdapter skillsAdapter; 
    ArrayList<ExpandableSkillsChild> list1; 
    ArrayList<ExpandableSkillsChild> list2; 
    ArrayList<ExpandableSkillsChild> list3; 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     expandList = (ExpandableListView) getActivity().findViewById(R.id.ExpList); 
     expListItems = getListItems(); 
     skillsAdapter = new SkillsAdapter(getActivity(), expListItems); 
     expandList.setAdapter(skillsAdapter); 
    } 

    private ArrayList<ExpandableSkillsGroup> getListItems() { 
     list1 = new ArrayList<ExpandableSkillsChild>(); 
     list1.add(new ExpandableSkillsChild("Android", null)); 
     list1.add(new ExpandableSkillsChild("Java", null)); 
     list1.add(new ExpandableSkillsChild("Javascript", null)); 

     ExpandableSkillsGroup group1 = new ExpandableSkillsGroup("Software Development"); 
     group1.setItems(list1); 

     list2 = new ArrayList<ExpandableSkillsChild>(); 
     list2.add(new ExpandableSkillsChild("MySQL", null)); 
     list2.add(new ExpandableSkillsChild("PostgreSQL", null)); 
     list2.add(new ExpandableSkillsChild("SQLite", null)); 

     ExpandableSkillsGroup group2 = new ExpandableSkillsGroup("Databases"); 
     group2.setItems(list2); 

     list3 = new ArrayList<ExpandableSkillsChild>(); 
     list3.add(new ExpandableSkillsChild("MySQL", null)); 
     list3.add(new ExpandableSkillsChild("PostgreSQL", null)); 
     list3.add(new ExpandableSkillsChild("SQLite", null)); 

     ExpandableSkillsGroup group3 = new ExpandableSkillsGroup("Operating Systems"); 
     group3.setItems(list3); 

     ArrayList<ExpandableSkillsGroup> groupList = new ArrayList<ExpandableSkillsGroup>(); 
     groupList.add(group1); 
     groupList.add(group2); 
     groupList.add(group3); 
     return groupList; 
    } 
} 

回答

0

首先用FragmentSkills extends SherlockFragment代替FragmentSkills extends SherlockListFragment,这里你不需要SherlockListFragment。在public void onActivityCreated(Bundle savedInstanceState)

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.fragment_skills, container, false); 
} 

也代替

expandList = (ExpandableListView) getActivity().findViewById(R.id.ExpList); 

做到这一点

expandList = (ExpandableListView) getView().findViewById(R.id.ExpList); 
+0

真棒:现在您的FragmentSkills添加此方法!非常感谢!我知道这只是一些小事。非常感谢您的帮助! – noneofthem 2013-02-21 20:13:17

相关问题