2011-12-03 9 views
0

私のデータベースからデータを取得しようとしていて、データベースの2つのクラスを使用してlistView.imに表示しようとしています。 第1クラスはDBAdapterで、リストビューのデータベース結果が機能しない

public String[] getData() 
{ 
// String[] columns =new String[]{DBHelper.ROWID, DBHelper.TITLE , DBHelper.AUTHOR, DBHelper.ISBN }; 

    String[] columns =new String[]{DBHelper.TITLE , DBHelper.AUTHOR, DBHelper.ISBN }; 
    Cursor c=ourDatabase.query(DBHelper.DATABASE_TABLE, columns, null, null, null, null, null); 
    String result=""; 
    String sa = null; 
    String sb = null; 
    String sc = null; 


    //int iRow=c.getColumnIndex(DBHelper.ROWID); 
    int is1=c.getColumnIndex(DBHelper.TITLE); 
     int is2=c.getColumnIndex(DBHelper.AUTHOR); 
      int is3=c.getColumnIndex(DBHelper.ISBN); 

      for (c.moveToFirst();!c.isAfterLast();c.moveToNext()){ 
       //result=result+c.getString(is1)+" "+c.getString(is2)+" "+c.getString(is3)+"\n"; 
       sa=c.getString(is1); 
       sb=c.getString(is2); 
       sc=c.getString(is3); 
      } 
       //Toast.makeText(HotOrNot.this, sa, Toast.LENGTH_SHORT).show(); 

return new String[] {sa,sb,sc}; 
} 

2. SQLViewでsecindクラスと私は仕事のために何をすべきか

public class SQLView extends Activity { 
    /** Called when the activity is first created. */  

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.list_layout); 

     HotOrNot entry2=new HotOrNot(this); 
     entry2.open(); 
      String[] data2=entry2.getData(); 
      entry2.close(); 
      Toast.makeText(SQLView.this, data2[1].toString(), Toast.LENGTH_SHORT).show(); 


     ListView list = (ListView) findViewById(R.id.list); 


     ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>(); 


     HashMap<String, String> map = new HashMap<String, String>(); 

     map = new HashMap<String, String>(); 
     map.put("name",data2[0].toString()); 
     map.put("address", data2[1].toString()); 
     map.put("address2", data2[2].toString()); 

     mylist.add(map); 






     // ... 
     ListAdapter mSchedule = new SimpleAdapter(this, mylist, R.layout.row, 
        data2, new int[] {R.id.rtextView1,R.id.rtextView2,R.id.rtextView3}); 
     list.setAdapter(mSchedule); 

は?これは、データベースを使用するために、私の最初の試みである私のリストを作成しようとしている方法イムのthatsアンドロイド!

今、私はちょうど空の背景を取得し

...

編集:私は

をDBへの追加位置1での最後の項目を取得し、私のトーストイムで

誰もがreturn文でで私を助けてもらえ私のDBHelperしてください?

+0

、代わりにActivity' 'のあなたのベースとして' ListActivity'を使用しています。 – havexz

+0

私はそれを変更しました!好奇心のために、リストにアクティビティを使用するのは間違っていますか?つまり、リストの上にイメージを使用することができます。 –

+0

あなたは 'ListActivity'でもイメージを持つことができます。ビュー階層で 'ListView'を持たなければならないという制限はありません。それはあなたがアイテムなどをクリックするようなユースケースをキャプチャする必要があるいくつかのヘルパーapisを持っています。それはあなたの人生を簡単にします。 – havexz

答えて

1

以下は固定コードです。これを試してみてください。

ListAdapter mSchedule = new SimpleAdapter(this, mylist, R.layout.row, 
    new String[] { "name", "address", "address2"}, 
    new int[] {R.id.rtextView1,R.id.rtextView2,R.id.rtextView3}); 
list.setAdapter(mSchedule); 

基本的に、追加したマップの列/キーを指定する必要があります。それで、マップから対応するビューにキーをマップします。

問題をループするために、これは、仕事をするには:

for(int i=0; i<data2.length; i+=3) { 
    HashMap<String, String> map; 

    map = new HashMap<String, String>(); 
    map.put("name",data2[i].toString()); 
    map.put("address", data2[i+1].toString()); 
    map.put("address2", data2[i+2].toString()); 

    mylist.add(map); 
} 

getData修正:手始めに

ArrayList<String> arrForData = new ArrayList<String>(); 
//int iRow=c.getColumnIndex(DBHelper.ROWID); 
int is1=c.getColumnIndex(DBHelper.TITLE); 
    int is2=c.getColumnIndex(DBHelper.AUTHOR); 
     int is3=c.getColumnIndex(DBHelper.ISBN); 

     for (c.moveToFirst();!c.isAfterLast();c.moveToNext()){ 
      //result=result+c.getString(is1)+" "+c.getString(is2)+" "+c.getString(is3)+"\n"; 
      arrForData.add(c.getString(is1)); 
      arrForData.add(c.getString(is2)); 
      arrForData.add(c.getString(is3)); 
     } 
      //Toast.makeText(HotOrNot.this, sa, Toast.LENGTH_SHORT).show(); 

return arrForData.toArray(); 
+0

ありがとうhavexz !!リストは機能していますが、私は自分のデータベースに追加した最後のアイテムしか見ることができません!どうすれば解決できますか? –

+0

あなたは 'mylist.add(map);'を一度だけ呼んでいます。この場合は最後の項目に相当します。すべてのデータを含む 'data2'変数をループする必要があります。 – havexz

+0

私に助けてもらえますか?私は何かのように使うことができますか? –

関連する問題