我有一个包含电影信息的ExpandableListView。这些组是电影标题,孩子是与这部电影相关的媒体(全部包含在电影对象中)。 展示ExpandableListView,但仅限于组,并且当我点击它们时,列表不会展开。我调试它,我发现getChildView永远不会执行。 我正在寻找,但我不知道为什么这个方法没有被执行。ExpandableListView不会追加孩子
ArrayList<MovieMock> movies;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.savedsyncs_content);
ExpandableListView l = (ExpandableListView) findViewById(R.id.ExpandableList_Content);
laodMockedList();
ContentExpandableListAdapter adapter = new ContentExpandableListAdapter(this, movies);
l.setAdapter(adapter);
}
public class ContentExpandableListAdapter extends BaseExpandableListAdapter {
private ArrayList<MovieMock> movies;
private Context context;
/*ExpandableList containing the movies from SavedSyncs. The groups are the movie's titles, the childs are
* the movie media and information.
* */
public ContentExpandableListAdapter(Context context, ArrayList<MovieMock> movies){
this.context = context;
this.movies = movies;
}
@Override
public boolean areAllItemsEnabled()
{
return true;
}
@Override
public MovieMock getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
Log.d("CHILD", "getChild : " + groupPosition);
return movies.get(groupPosition);
}
@Override
public long getChildId(int arg0, int arg1) {
// TODO Auto-generated method stub
//return Long.parseLong(movies.get(arg0).getId());
return arg1;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild,View convertView, ViewGroup parent) {
MovieMock child = (MovieMock)getChild(groupPosition, childPosition);
Log.d("DEBUG", "Entro al hijo") ;
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.expandablelistcontent_child, null);
}
TextView audiotxt = (TextView) convertView.findViewById(R.id.audio_text);
audiotxt.setText(child.getAudio());
/*TextView videotxt = (TextView) convertView.findViewById(R.id.video_text);
videotxt.setText(child.getAudio());*/
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return 3;
}
@Override
public String getGroup(int groupPosition) {
// TODO Auto-generated method stub
return movies.get(groupPosition).getTitle();
}
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return movies.size();
}
@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
//return Long.parseLong(movies.get(groupPosition).getId());
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
String movieTitle = (String) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.expandablelistcontent_group, null);
}
TextView grouptxt = (TextView) convertView.findViewById(R.id.ContentText);
grouptxt.setText(movieTitle);
return convertView;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return true;
}
}
这里是XML代码:
集团:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/ContentText"
android:text="Content"
android:layout_width="wrap_content"
android:layout_height="40dip"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"/>
<ImageButton
android:id="@+id/delete_button"
android:layout_width="20dip"
android:layout_height="20dip"
android:background="@drawable/delete_button"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
>
</ImageButton>
</RelativeLayout>
孩子:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/layout_audio">
<ImageView
android:background="@drawable/audio_icon"
android:layout_height="20dip"
android:layout_width="20dip"
android:id="@+id/audio_icon"
>
</ImageView>
<TextView
android:id="@+id/audio_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Audio"
android:layout_toRightOf="@id/audio_icon"
>
</TextView>
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/layout_video"
android:layout_below="@id/layout_audio">
<ImageView
android:background="@drawable/video_icon"
android:layout_height="20dip"
android:layout_width="20dip"
android:id="@+id/video_icon">
</ImageView>
<TextView
android:id="@+id/video_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Trailer"
android:layout_toRightOf="@id/video_icon"
>
</TextView>
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/layout_image"
android:layout_below="@id/layout_video">
<ImageView
android:background="@drawable/image_icon"
android:layout_height="20dip"
android:layout_width="20dip"
android:id="@+id/image_icon">
</ImageView>
<TextView
android:id="@+id/image_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="Poster"
android:layout_toRightOf="@id/image_icon"
>
</TextView>
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/layout_info"
android:layout_below="@id/layout_image">
<ImageView
android:background="@drawable/info_icon"
android:layout_height="20dip"
android:layout_width="20dip"
android:id="@+id/info_icon">
</ImageView>
<TextView
android:id="@+id/info_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Movie Information"
android:layout_toRightOf="@id/info_icon"
>
</TextView>
</LinearLayout>
</RelativeLayout>
感谢您的回答,但是,如果我没有遗漏一些东西,与我的代码的区别是即时通讯只使用一个数组为父母和孩子(因为没有理由使用2)。那是问题吗?我明白它不应该。 – DiamondGerace
感谢您的回答,因为m卡在标题点击不能够展开childview,但与我的适配器的refrence我完成.. –