2013-10-26 37 views
-2

我正在創建可擴展的列表視圖,如this image這麼多的表格,當我點擊任何一個展示它的孩子我的問題如何創建數據庫只顯示1喜歡計算機電子時點擊那個水龍頭顯示其孩子們,我發現這個教程是使用硬編碼數據plz我如何使用sqlite數據庫expandablelistview?如何在消耗品列表視圖中顯示sqllite數據

public class MainActivity extends Activity { 

    ExpandableListAdapter listAdapter; 
    ExpandableListView expListView; 
    List<String> listDataHeader; 
    HashMap<String, List<String>> listDataChild; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // get the listview 
     expListView = (ExpandableListView) findViewById(R.id.lvExp); 

     // preparing list data 
     prepareListData(); 

     listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild); 

     // setting list adapter 
     expListView.setAdapter(listAdapter); 

     // Listview Group click listener 
     expListView.setOnGroupClickListener(new OnGroupClickListener() { 

      @Override 
      public boolean onGroupClick(ExpandableListView parent, View v, 
        int groupPosition, long id) { 
       // Toast.makeText(getApplicationContext(), 
       // "Group Clicked " + listDataHeader.get(groupPosition), 
       // Toast.LENGTH_SHORT).show(); 
       return false; 
      } 
     }); 

     // Listview Group expanded listener 
     expListView.setOnGroupExpandListener(new OnGroupExpandListener() { 

      @Override 
      public void onGroupExpand(int groupPosition) { 
       Toast.makeText(getApplicationContext(), 
         listDataHeader.get(groupPosition) + " Expanded", 
         Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     // Listview Group collasped listener 
     expListView.setOnGroupCollapseListener(new OnGroupCollapseListener() { 

      @Override 
      public void onGroupCollapse(int groupPosition) { 
       Toast.makeText(getApplicationContext(), 
         listDataHeader.get(groupPosition) + " Collapsed", 
         Toast.LENGTH_SHORT).show(); 

      } 
     }); 

     // Listview on child click listener 
     expListView.setOnChildClickListener(new OnChildClickListener() { 

      @Override 
      public boolean onChildClick(ExpandableListView parent, View v, 
        int groupPosition, int childPosition, long id) { 
       // TODO Auto-generated method stub 
       Toast.makeText(
         getApplicationContext(), 
         listDataHeader.get(groupPosition) 
           + " : " 
           + listDataChild.get(
             listDataHeader.get(groupPosition)).get(
             childPosition), Toast.LENGTH_SHORT) 
         .show(); 
       return false; 
      } 
     }); 
    } 

    /* 
    * Preparing the list data 
    */ 
    private void prepareListData() { 
     listDataHeader = new ArrayList<String>(); 
     listDataChild = new HashMap<String, List<String>>(); 

     // Adding child data 
     listDataHeader.add("Top 250"); 
     listDataHeader.add("Now Showing"); 
     listDataHeader.add("Coming Soon.."); 

     // Adding child data 
     List<String> top250 = new ArrayList<String>(); 
     top250.add("The Shawshank Redemption"); 
     top250.add("The Godfather"); 
     top250.add("The Godfather: Part II"); 
     top250.add("Pulp Fiction"); 
     top250.add("The Good, the Bad and the Ugly"); 
     top250.add("The Dark Knight"); 
     top250.add("12 Angry Men"); 

     List<String> nowShowing = new ArrayList<String>(); 
     nowShowing.add("The Conjuring"); 
     nowShowing.add("Despicable Me 2"); 
     nowShowing.add("Turbo"); 
     nowShowing.add("Grown Ups 2"); 
     nowShowing.add("Red 2"); 
     nowShowing.add("The Wolverine"); 

     List<String> comingSoon = new ArrayList<String>(); 
     comingSoon.add("2 Guns"); 
     comingSoon.add("The Smurfs 2"); 
     comingSoon.add("The Spectacular Now"); 
     comingSoon.add("The Canyons"); 
     comingSoon.add("Europa Report"); 

     listDataChild.put(listDataHeader.get(0), top250); // Header, Child data 
     listDataChild.put(listDataHeader.get(1), nowShowing); 
     listDataChild.put(listDataHeader.get(2), comingSoon); 
    } 
} 
+1

「Android的SQLite數據庫教程CURD 「 - 谷歌有很多教程可用,然後從sqliteDB讀取並填寫listData。 – N20084753

+0

,但是如何以類似的方式在可擴展列表視圖 – user2914381

+0

中插入,您已將此硬編碼字符串添加到列表中。 – N20084753

回答

0

在你prepareListData()

// Adding child data 
    List<String> top250 = getTop250(); 

public List<String> getTop250() { 
    List<String> top250List = new ArrayList<String>(); 
    // Select All Query 
    String selectQuery = "SELECT * FROM " + TABLE_CONTACTS; 

    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      // Adding contact to list 
      top250List.add(cursor.getString(0)); 
     } while (cursor.moveToNext()); 
    } 

    // return top 250 list 
    return top250List; 
} 

同樣得到其他列表並將其添加到孩子,希望這有助於以及在sqlite的DB看here

+0

thnx但是我不知道如何在我的列表中的任何類別此代碼android配置單元硬編碼加載三個類別及其子類,但如果在我的數據庫100類別,然後呢? – user2914381

+0

在我以上發佈的示例代碼有三個類別250,nowShowing,comingSoon和它的subchild,但我想dynamiclaly從數據庫加載所有類別我不知道有多少,所以我怎麼能聲明硬編碼列表 top250 = getTop250(); – user2914381

+0

@ user2914381 - 每個類別列表都存儲在單獨的表格中還是存儲在單個表格中,並使用一些唯一的ID來區分? – N20084753

相關問題