我是Android开发的新手。我找到了关于可扩展列表视图的本教程,但它仅来自固定数据。然后经过一些搜索,我能够使用数据库中的数据设置listDataChild。但现在我一直坚持如何用数据库中的数据填充listDataHeader。
这是我到目前为止所做的:
public class Manage_Students extends Activity {
ExpandableListAdapter listAdapter;
ExpandableListView expListView;
List<String> listDataHeader;
HashMap<String, List<String>> listDataChild;
SimpleCursorAdapter cursorAdapter;
Cursor cursor;
private LoginDataBaseAdapter loginDataBaseAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.students);
// get the listview
expListView = (ExpandableListView) findViewById(R.id.lvExp);
// get Instance of Database Adapter
loginDataBaseAdapter=new LoginDataBaseAdapter(this);
loginDataBaseAdapter=loginDataBaseAdapter.open();
// preparing list data
prepareListData();
listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild);
// setting list adapter
expListView.setAdapter(listAdapter);
}
/*
* Preparing the list data
*/
private void prepareListData() {
listDataHeader = new ArrayList<String>();
listDataChild = new HashMap<String, List<String>>();
listDataHeader.add("Subject");
List<String> audio = loginDataBaseAdapter.retrievevalue("g");
listDataChild.put(listDataHeader.get(0),audio); // Header, Child data
}
}
和我的适配器:
public List<String> retrievevalue(String value)
{
ArrayList<String> dataList = new ArrayList<String>();
Cursor cu=db.rawQuery("SELECT Section from Sections where Subjid ='"+value+"'",null);
cu.moveToFirst();
if (!cu.isAfterLast())
{
do
{
dataList.add(cu.getString(0));
}
while (cu.moveToNext());
cu.close();
}
// return the ArrayList that holds the data collected from
// the database.
return dataList;
//
}
答案 0 :(得分:0)
您无法在此方法中添加或填充子数据,因为基本适配器会同时考虑获取子数据和组数据。因此,创建自己的自定义适配器并仅在其中传递父数据或组数据,并在单击组数据时,从那里添加子数据。