2013-05-17 3 views
0

sqlite 데이터베이스, listview 및 arraylist.By 버튼을 클릭하여 데이터를 데이터베이스에 삽입 한 다음 커서를 사용하여 데이터를 추출하고 '선택'하여 이상적으로 추출하려고합니다.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); 

그리고 코드를 클릭 버튼을

일을 다음을 수행하도록되어, 오프 listview.Following에 반영해야 할 것은 같은 코드입니다 값을 아주 잘 삽입하고 있지만 뭔가 궁금해 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(); 
     } 
    } 

내 코드가 잘못되어 있는지 여부를 명확하게 설명합니다. 감사합니다.

+0

를 사용하여 배열에 데이터를 삽입 한 후? 왜 select가 아닌 rawQuery를 사용합니까? 'cu.toString()'은 커서에 대한 설명을 반환합니다. 가장 이해하기 쉽지 않은 것 같다. 내 생각 엔 귀하의 쿼리가 결과를 반환하지 않습니다. – njzk2

답변

0

어댑터의 notifyDataSetChanged()으로 전화하십시오.

yourListAdapter.notifyDataSetChanged(); 
+0

대단히 감사합니다. 나는 앞으로 나아갈 것을 상기 할 것입니다. – mithil

0

어댑터의 내용을 변경할 때 listadap.notifyDataSetChanged()을 수행하여 데이터가 변경되었다고 알려야합니다.

0

전화 listadap.notifyDatasetChanged() 데이터가 왜 ArrayList에 신경 데이터베이스에서 오는 경우

+0

여전히 배열에서 데이터를 검색하지 않습니다. :( – mithil

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); 
관련 문제