2014-04-01 48 views
0

我想在片段中使用Expandable列表视图。使用片段时列表未展开

我得到组名称,但点击时无法打开子元素。

public class SavedTabsFragment extends Fragment { 


public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.saved_tab, null); 
    ExpandableListView elv = (ExpandableListView) v.findViewById(R.id.list); 
    elv.setClickable(true); 
    SavedTabsListAdapter adapter= new SavedTabsListAdapter(getActivity()); 
    /*adapter.setInflater(inflater, 
      getActivity());*/ 
    elv.setAdapter(adapter); 
    return v; 
} 
} 

SavedTabsListAdapter

public class SavedTabsListAdapter extends BaseExpandableListAdapter { 

private String[] groups = { "People Names", "Dog Names", "Cat Names", 
     "Fish Names" }; 
private Context ctx; 
private LayoutInflater inflater; 
private String[][] children = { { "Arnold", "Barry", "Chuck", "David" }, 
     { "Ace", "Bandit", "Cha-Cha", "Deuce" }, { "Fluffy", "Snuggles" }, 
     { "Goldy", "Bubbles" } }; 

public SavedTabsListAdapter(Context ct) { 
    ctx = ct; 
    inflater = (LayoutInflater) ctx 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 

@Override 
public int getGroupCount() { 
    return groups.length; 
} 

@Override 
public int getChildrenCount(int i) { 
    return children[i].length; 
} 

@Override 
public Object getGroup(int i) { 
    return groups[i]; 
} 

@Override 
public Object getChild(int i, int i1) { 
    return children[i][i1]; 
} 

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

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

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

@Override 
public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) { 

    view = inflater.inflate(R.layout.grouprow, null); 
    CheckedTextView tv = (CheckedTextView) view 
      .findViewById(R.id.textView1); 
    tv.setText(getGroup(i).toString()); 
    return view; 
} 

@Override 
public View getChildView(int i, int i1, boolean b, View view, 
     ViewGroup viewGroup) { 

    view = inflater.inflate(R.layout.childrow, null); 
    TextView tv = (TextView) view.findViewById(R.id.textView1); 
    tv.setText(getChild(i, i1).toString()); 
    return view; 
} 

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

} 

回答

0

试试与下面适配器代码。它的工作现在。

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseExpandableListAdapter; 
import android.widget.CheckedTextView; 
import android.widget.TextView; 

public class SavedTabsListAdapter extends BaseExpandableListAdapter { 

    private String[] groups = { "People Names", "Dog Names", "Cat Names", 
      "Fish Names" }; 
    private Context ctx; 
    private LayoutInflater inflater; 
    private String[][] children = { { "Arnold", "Barry", "Chuck", "David" }, 
      { "Ace", "Bandit", "Cha-Cha", "Deuce" }, { "Fluffy", "Snuggles" }, 
      { "Goldy", "Bubbles" } }; 

    public SavedTabsListAdapter(Context ct) { 
     ctx = ct; 
     inflater = (LayoutInflater) ctx 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public int getGroupCount() { 
     return groups.length; 
    } 

    @Override 
    public int getChildrenCount(int i) { 
     return children[i].length; 
    } 

    @Override 
    public Object getGroup(int i) { 
     return groups[i]; 
    } 

    @Override 
    public Object getChild(int i, int i1) { 
     return children[i][i1]; 
    } 

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

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

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

    @Override 
    public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) { 

     view = inflater.inflate(R.layout.grouprow, null); 
     CheckedTextView tv = (CheckedTextView) view 
       .findViewById(R.id.textView1); 
     tv.setText(getGroup(i).toString()); 
     return view; 
    } 

    @Override 
    public View getChildView(int i, int i1, boolean b, View view, 
      ViewGroup viewGroup) { 

     view = inflater.inflate(R.layout.childrow, null); 
     TextView tv = (TextView) view.findViewById(R.id.textView1); 
     tv.setText(getChild(i, i1).toString()); 
     return view; 
    } 

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

} 
+0

检查更新的问题请 – Nick

+0

你有什么错误吗?如果是的话请发帖。 – GrIsHu

+0

只是改变你的行'公共类SavedTabsFragment扩展片段{'与'公共类SavedTabsFragment扩展FragmentActivity {'和适配器类的构造函数为'SavedTabsListAdapter adapter = new SavedTabsListAdapter(SavedTabsFragment.this.getActivity());' – GrIsHu