0

私はsqliteデータベース、listview、arraylistをいじろうとしています。ボタンをクリックするとデータがデータベースに挿入され、カーソルを使用してデータが「選択」によって抽出され、理想的にはリストビューに反映されるはずです。同様に:

次のアクティビティが onCreate メソッドで行われます。

    lstitem=new ArrayList<String>();
    listadap=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,lstitem);
    l1=(ListView)findViewById(R.id.listView1);
    l1.setAdapter(listadap);
    l1.setVisibility(View.VISIBLE);

そして、ボタンをクリックすると、コードは次のことを行うはずですが、値を非常にうまく挿入していますが、Cursorオブジェクトと「rawQuery」を使用したそのインスタンス化に何か問題があると思います。

     MainActivity.myDataBase.openDatabase("/data/data/packagename/databases/tablename", null,MainActivity.myDataBase.OPEN_READWRITE);
     MainActivity.myDataBase.execSQL("INSERT INTO " +
                      MainActivity.tablename +
                        " Values ('"+ finalnumber +"','"+ name +"','"+ message +"','"+ event +"','"+ ldate +"');");
     Cursor cu = MainActivity.myDataBase.rawQuery("SELECT Name FROM " + MainActivity.tablename + " WHERE Date =" + ldate +";" , null);

     cu.moveToFirst();
     Log.d("first rec", cu.toString());
     while(cu.isAfterLast())
     {
        try{
            lstitem.add(cu.getString(0));
            Log.d("first list item",lstitem.get(0)); //this is not returning any value in logcat.
            Log.d("first rec", cu.getString(0));// this is returning garbled value in logcat
            cu.moveToNext();
            }
        catch(Exception e)
            {
            e.printStackTrace();
        }
     }

私のコードが間違っているかどうかを明確にしてください.Thank.

4

4 に答える 4

0

アダプターでnotifyDataSetChanged()を呼び出します。

yourListAdapter.notifyDataSetChanged();
于 2013-05-17T08:24:35.403 に答える
0

次のコードを使用します

lstitem=new ArrayList<String>();
listadap=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,lstitem);
l1=(ListView)findViewById(R.id.listView1);
l1.setAdapter(listadap);
l1.notifyDataSetChanged();
l1.setVisibility(View.VISIBLE);
于 2013-05-17T08:47:13.943 に答える
0

アダプターの内容を変更するときは、 を実行してデータが変更されたことを彼に伝えてくださいlistadap.notifyDataSetChanged()

于 2013-05-17T08:23:07.830 に答える