2013-01-27 1 views
0
내가 여기에 내 이전 게시물을 편집 한

에 표시합니다. (How to use Android SQLite Database)어떻게 데이터 형식 SQLite 데이터베이스를 얻고있는 ListView

을 나는 '쇼'버튼에 대한 코드를 변경 한이 게시물에서. 이제 데이터베이스에 액세스하려고합니다. ListView를 추가하고 데이터베이스 내용을 표시하려고합니다. 그러나 같은 오류가 다시 발생합니다. ("불행하게도 배우는 것이 멈췄습니다.") 쇼 버튼을 두 드리십시오.

package com.example.learn; 

    import android.os.Bundle; 
    import android.app.Activity; 
    import android.database.Cursor; 
    import android.database.sqlite.SQLiteDatabase; 
    import android.view.Menu; 
    import android.view.View; 
    import android.view.View.OnClickListener; 
    import android.widget.ArrayAdapter; 
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.widget.ListView; 

    public class MainActivity extends Activity { 

     Button b1, b2, b3; 
     EditText t1; 
     ListView lv1; 
     SQLiteDatabase db; 
     Cursor c; 

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

      b1 = (Button) findViewById(R.id.button1); 
      b2 = (Button) findViewById(R.id.button2); 
      b3 = (Button) findViewById(R.id.button3); 
      t1 = (EditText) findViewById(R.id.editText1); 
      lv1 = (ListView) findViewById(R.id.listView1); 

      db = openOrCreateDatabase("MyDB", MODE_PRIVATE, null); 
      db.execSQL("CREATE TABLE IF NOT EXISTS Names(Name VARCHAR)"); 

      b1.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View arg0) { 
        // TODO Auto-generated method stub 

        if (t1.getText().toString().equals("")) { 
         t1.setText("Enter Name"); 
        } 

        else { 
         String input = t1.getText().toString(); 
         db.execSQL("INSERT INTO Names VALUES(" + "'" + input + "'" 
           + ")"); 
        } 

       } 
      }); 

      b2.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View arg0) { 
        // TODO Auto-generated method stub 
        c = db.rawQuery("SELECT * FROM Names", null); 
        int count = c.getCount(); 

        String[] values = new String[count + 1]; 
        int i = 0; 
        do { 
         values[i] = c.getString(c.getColumnIndex("Name")); 
         i++; 
        } while (c.moveToNext()); 
        // Define a new Adapter 
        // First parameter - Context 
        // Second parameter - Layout for the row 
        // Third parameter - ID of the TextView to which the data is 
        // written 
        // Forth - the Array of data 

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
          getBaseContext(), android.R.layout.simple_list_item_1, 
          android.R.id.text1, values); 

        // Assign adapter to ListView 
        lv1.setAdapter(adapter); 

       } 
      }); 

      b3.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View arg0) { 
        // TODO Auto-generated method stub 
        db.execSQL("DELETE FROM Names"); 
       } 
      }); 
     } 

     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      // Inflate the menu; this adds items to the action bar if it is present. 
      getMenuInflater().inflate(R.menu.activity_main, menu); 
      return true; 
     } 

    } 




and this is activity_main.xml - 


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:ems="10" 
     android:hint="Add" > 

    </EditText> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/editText1" 
     android:layout_marginTop="18dp" 
     android:text="@string/add" /> 

    <Button 
     android:id="@+id/button2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/button1" 
     android:layout_alignBottom="@+id/button1" 
     android:layout_centerHorizontal="true" 
     android:text="@string/show" /> 

    <Button 
     android:id="@+id/button3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/button2" 
     android:layout_alignBottom="@+id/button2" 
     android:layout_alignParentRight="true" 
     android:text="@string/del" /> 

    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/button1" > 

    </ListView> 

</RelativeLayout> 

내가 문제가 지금의

do { 
    values[i] = c.getString(c.getColumnIndex("Name")); 
    i++; 
    } 
while (c.moveToNext()); 

뭔가 잘못 생각 - 여기

는 전체 코드인가? 도와주세요. 이런 식으로 반복

+0

logcat을 게시 할 수도 있습니다. – wtsang02

+0

어떻게 게시합니까? 주석 상자에 복사하여 붙여 넣으면 읽을 수 없습니다. –

+0

mo, 질문에 추가하십시오. – wtsang02

답변

0

시도 :

for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { 
    values[i] = c.getString(c.getColumnIndex("Name")); 
} 
0

나는이 코드를 시도한다고 생각합니다.

Cursor cursor = new Cursor(); 
cursor.moveToFirst(); 
do{ 
values[i++] = cursor.getString(cursor.getColumnIndex("name")); 
}while(cursor.moveToNext()); 
cursor.close(); 
관련 문제