Добавление динамического ExpandableListView внутри main.xml

Есть ли сайт, где я могу найти внутреннюю работу BaseExpandableListAdapter? Я прочитал API и до сих пор не понимаю, как он перебирает весь массив, который предоставляется для предоставления представления. У меня проблемы с моей собственной реализацией. Я не могу создать полный список расширяемых списков без использования ExpandableListActivity, хотя оба они одинаковы. Предполагается извлекать строки из базы данных и создавать из каждого расширяемый список, а также добавлять все созданные расширяемые списки в линейный макет внутри main.xml. Что происходит, так это то, что отображается только расширяемый список для первой строки. Вот фрагмент

Основной класс:

public class MainActivity extends Activity implements OnClickListener {
DBAdapter groupTable = new DBAdapter(this);
ExpandableListView groupLabel;
GroupAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

       groupTable.open();
    adapter = new GroupAdapter(groupTable.getAllGroups());
    retrieveExpandables(adapter);
       groupTable.close();
    Button addGroupButton = (Button)findViewById(R.id.addGroup);
    addGroupButton.setOnClickListener(this);
}

public void retrieveExpandables(GroupAdapter adapter) { 
    LinearLayout layout = (LinearLayout)findViewById(R.id.grouplist);
    LinearLayout groupLayout =    
             (LinearLayout)getLayoutInflater().inflate(R.layout.grouplistview, null);

    ExpandableListView groupExpandableList = 
             (ExpandableListView)groupLayout.findViewById(R.id.groupLabel);
    groupExpandableList.setAdapter(adapter);

    layout.addView(groupLayout);
}

Класс BaseExpandableListAdapter:

@Override
public View getGroupView(int groupPosition, boolean isExpanded,
        View convertView, ViewGroup parent) {
    if (convertView instanceof ViewGroup)
        return (ViewGroup) convertView;
    Context context = parent.getContext();
    LayoutInflater inflater = LayoutInflater.from(context);
    ViewGroup item = (ViewGroup)inflater.inflate(R.layout.grouplisttext, null);
    TextView groupLabel = (TextView)item.findViewById(R.id.groupLabel);
    groupLabel.setText(groups[groupPosition].name);
    groupLabel.setVisibility(View.VISIBLE);
    Log.d("A1", "This part repeating");
    return item;
}

XML-файл для TextView, который будет заголовком расширяемого списка.

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="fill_parent"
          android:id="@+id/groups"
          android:layout_height="wrap_content">

    <TextView android:id="@+id/groupLabel"
              android:textSize="24sp"
              android:text="asdf"
              android:textStyle="bold"
              android:layout_width="fill_parent"
              android:layout_weight="1"
              android:layout_height="40dip"
              android:layout_marginLeft="45dip"
              android:gravity="center_vertical" />

 </LinearLayout>

XML-файл для ExpandableListView

 <?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:id="@+id/groups"
          android:layout_height="wrap_content">

    <ExpandableListView android:id="@+id/groupLabel"
              android:textSize="24sp"
              android:textStyle="bold"
              android:layout_width="fill_parent"
              android:layout_weight="1"
              android:layout_height="40dip" />

 </LinearLayout>

Извините, если я разместил слишком много кода, я попытался удалить как можно больше ненужной информации.


person louieansonng    schedule 28.04.2011    source источник


Ответы (1)


Я узнал, где проблема пошла не так. По-видимому, я поменял местами LinearLayout и ScrollView внутри main.xml, и метод для класса getViewGroup был неправильным. Теперь все хорошо

person louieansonng    schedule 29.04.2011