2012-05-14 3 views
1

Я пытаюсь реализовать ExpandableListView в Android, реализуя пользовательский адаптер, но я не получаю никакого вывода на экране.Расширяемый ListView с пользовательским адаптером

Основной макет XML является:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="This is an expandable listview" 
    /> 
<ExpandableListView 
    android:id="@android:id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    /> 


</LinearLayout> 

Группа файлов макета: файл макета

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

<TextView 
    android:id="@+id/tvPlayerName" 
    android:textSize="14px" 
    android:textStyle="normal" 
    android:layout_width="150px" 
    android:layout_height="wrap_content" 
    /> 

Ребенок:

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

<TextView 
    android:id="@+id/tvPlayerName" 
    android:textSize="14px" 
    android:textStyle="normal" 
    android:layout_width="150px" 
    android:layout_height="wrap_content" 
    /> 

</LinearLayout> 

И, наконец, файл класса активности:

public class ExpandableListViewTest extends ExpandableListActivity { 
String groupElements[] = {"India","Austrailia","England","South Africa"}; 
String childElements[][] = { 
    {"Sachin Tendulkar","Raina","Dhoni","Yuvraj"}, 
    {"Ponting","Adam Gilchrist","Michael Clarke"}, 
    {"Andrew Strauss","Kevin Peterson","Nasir Hussain"}, 
    {"Grame Smith","AB de Villiers","Jacques Kallis"} 
}; 

int width; 
ExpandableListView expList; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    //Setup our adapter 
    MyExpandableAdapter mAdapter = new MyExpandableAdapter(this); 
    setListAdapter(mAdapter); 
} 
public class MyExpandableAdapter extends BaseExpandableListAdapter 
{ 
    private Context myContext; 

    public MyExpandableAdapter(Context context) 
    { 
     this.myContext= context; 
    } 

@Override 
public Object getChild(int groupPosition, int childPosition) { 
    // TODO Auto-generated method stub 
    return childElements[groupPosition][childPosition]; 
} 

@Override 
public long getChildId(int groupPosition, int childPosition) { 
    // TODO Auto-generated method stub 
    return childPosition; 
} 

@Override 
public View getChildView(int groupPosition, int childPosition, 
     boolean isLastChild, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    if(convertView == null) 
    { 
     LayoutInflater inflater = getLayoutInflater(); 
     convertView = inflater.inflate(R.layout.child, parent,false); 
    } 
    TextView tvPlayerName = 
     (TextView)convertView.findViewById(R.id.tvPlayerName); 
    tvPlayerName.setText(childElements[groupPosition][childPosition]); 

    return convertView; 

} 

@Override 
public int getChildrenCount(int groupPosition) { 
    // TODO Auto-generated method stub 
    return childElements[groupPosition].length; 
} 

@Override 
public Object getGroup(int groupPosition) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public int getGroupCount() { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public long getGroupId(int groupPosition) { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public View getGroupView(int groupPosition, boolean isExpanded, 
     View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    if(convertView == null) 
    { 
     LayoutInflater inflater = getLayoutInflater(); 
     convertView = inflater.inflate(R.layout.group,parent,false); 
    } 
    TextView tvGroupName = (TextView)convertView.findViewById(R.id.groupName); 
    //tvGroupName.setText(groupElements[groupPosition]); 
    tvGroupName.setText("Group Row"); 

    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 false; 
} 


} 

} 

Все кажется straighhtforward достаточно, но после запуска приложения, экран остается blank.Any помощь/идеально ценится.

ответ

2

Ваш код выглядит неполным. Вы только что получили заполнители в методах getGroup, getGroupId и getGroupCount. Они должны ссылаться на ваш массив groupElements.

Тот факт, что getGroupCount в настоящее время возвращает ноль, будет достаточно для ExpandableListView, чтобы ничего не отображать.

0

Возможно, вы должны установить возвращаемое значение getGroupCount() в groupElements.length.

В настоящее время возвращается, что у вас нет групп, поэтому ничего не показывать.

+0

Это сработало, спасибо. – user1107888

+1

это здорово! удачи дальше :) – rekaszeru

Смежные вопросы