ListView不会更新数组中的条目

时间:2013-05-17 08:18:10

标签: android sqlite android-listview android-cursor

我试图摆弄sqlite数据库,listview和arraylist。点击按钮,数据被插入到数据库中,然后使用游标,数据被'select'提取,理想情况下应该反映在listview中。是相同的代码:

以下活动在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();
        }
     }

请澄清我的代码是否行为不端。谢谢。

4 个答案:

答案 0 :(得分:0)

当您更改适配器的内容时​​,您应该通过执行listadap.notifyDataSetChanged()告诉他数据已更改。

答案 1 :(得分:0)

在适配器上拨打notifyDataSetChanged()

yourListAdapter.notifyDataSetChanged();

答案 2 :(得分:0)

在将数据插入数组

后调用listadap.notifyDatasetChanged()

答案 3 :(得分: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);