如何使用数据库中的数据在可扩展列表视图中填充listDataHeader?

时间:2014-09-13 03:45:57

标签: android

我是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;  
    //        
    }  

1 个答案:

答案 0 :(得分:0)

您无法在此方法中添加或填充子数据,因为基本适配器会同时考虑获取子数据和组数据。因此,创建自己的自定义适配器并仅在其中传递父数据或组数据,并在单击组数据时,从那里添加子数据。