2012-01-20 19 views
-1

SQLiteデータベースからデータを取得し、リストビューで表示する方法。SQLiteデータベースからデータを読み込んでリストビューで表示する方法

私は私のコードでこれをやっているが、私はエラーを取得しています:

public class ShoewDataListActivity extends ListActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.grupadd); 
     Button btnAdd = (Button) findViewById(R.id.btnAdd); 
     Button view=(Button) findViewById(R.id.btnShowData); 
     view.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       displayResultList(); 
      } 
     }); 
     btnAdd.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 

       boolean didItWork = true; 

       try { 
        EditText edtAddName=(EditText) findViewById(R.id.editNameAdd); 
        String name = edtAddName.getText().toString(); 
        AddData entry = new AddData(ShoewDataListActivity.this); 
        entry.open(); 
        entry.createEntry(name); 
        entry.close(); 
       } catch (Exception e) { 
        // e.printStackTrace(); 
        didItWork = false; 
        String error = e.toString(); 
        Dialog d = new Dialog(ShoewDataListActivity.this); 
        d.setTitle("What happend...!!"); 
        TextView tv = new TextView(ShoewDataListActivity.this); 
        tv.setText("...." + error + "...."); 
        d.setContentView(tv); 
        d.show(); 

       } finally { 
        if (didItWork) { 
         // Dialog d = new Dialog(GroupActivity.this); 
         // d.setTitle("This is ok..........!!"); 
         // TextView tv= new TextView(GroupActivity.this); 
         // tv.setText("....SuccessFull...."); 
         // d.setContentView(tv); 
         // d.show(); 
         Toast.makeText(getBaseContext(), "Project Saved", 
           Toast.LENGTH_LONG).show(); 



        } 
       } 
      } 
     }); 

    } 

    private void displayResultList() { 
     TextView tView = new TextView(this); 
     AddData info = new AddData(this); 
     ArrayList<String> results = new ArrayList<String>(); 
     results = info.fatchData(); 
     tView.setText("This data is retrieved from the database and only 4 " 
       + "of the results are displayed"); 
     getListView().addHeaderView(tView); 
     setListAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, results)); 
     getListView().setTextFilterEnabled(true); 

    } 


} 

そして、私のDbhelperクラスです:

public class AddData { 

    public static final String TAG = DbHelper.class.getSimpleName(); 
    public static final String DB_NAME = "Grup.db"; 
    public static final int DB_VERSION = 1; 
    public static final String TABLE = "Grups"; 
    public static final String C_ID = BaseColumns._ID; 
    public static final String C_CREATED_AT = "easy_ass_created_At"; 
    public static final String C_NAME = "name"; 
    private DbHelper ourHelper; 
    private final Context ourContext; 
    private SQLiteDatabase ourDatabase; 

    public class DbHelper extends SQLiteOpenHelper { 

     // public static final String TAG = DbHelper.class.getSimpleName(); 
     // public static final String DB_NAME = "Grup.db"; 
     // public static final int DB_VERSION = 1; 
     // public static final String TABLE = "Grups"; 
     // public static final String C_ID = BaseColumns._ID; 
     // public static final String C_CREATED_AT = "easy_ass_created_At"; 
     // public static final String C_NAME = "name"; 

     public DbHelper(Context context) { 
      super(context, DB_NAME, null, DB_VERSION); 

     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 

      String sql = ("create table " + TABLE + " (" + C_ID 
        + " integer primary key autoincrement, " + C_NAME 
        + " text not null" + ");"); 
      db.execSQL(sql); 
      Log.d(TAG, "OnCreate sql" + sql); 

     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      db.execSQL("drop table if exists " + TABLE); 
      this.onCreate(db); 
      Log.d("TAG", "********On Upgrate Drop Table*****"); 

     } 

    } 

    public AddData(Context context) { 
     ourContext = context; 

    } 

    public AddData open() throws SQLException { 

     ourHelper = new DbHelper(ourContext); 
     ourDatabase = ourHelper.getReadableDatabase(); 
     return this; 
    } 

    public void close() { 
     ourHelper.close(); 
    } 

    public long createEntry(String name) { 
     ContentValues cv = new ContentValues(); 
     cv.put(C_NAME, name); 
     return ourDatabase.insert(TABLE, null, cv); 
    } 

    public String getData() { 

     String[] columns = new String[] { C_ID, C_NAME }; 
     Cursor c = ourDatabase.query(TABLE, columns, null, null, null, null, 
       null); 
     String result = ""; 
     // int iRow=c.getColumnIndex(C_ID); 
     int iName = c.getColumnIndex(C_NAME); 

     // for(c.moveToFirst();!c.isAfterLast();c.moveToLast()){ 
     for (boolean hasItem = c.moveToFirst(); hasItem; hasItem = c 
       .moveToNext()) { 
      result = result + " " + c.getString(iName) + "\n"; 
      c.moveToNext(); 
     } 
     c.close(); 
     return result; 

    } 

    public ArrayList<String> fatchData(){ 

     String[] columns = new String[] { C_ID, C_NAME }; 
     Cursor c = ourDatabase.query(TABLE, columns, null, null, null, null, 
       null); 
     String result=""; 
     ArrayList<String> result1=new ArrayList<String>(); 
     // int iRow=c.getColumnIndex(C_ID); 
     int iName = c.getColumnIndex(C_NAME); 

     // for(c.moveToFirst();!c.isAfterLast();c.moveToLast()){ 
     for (boolean hasItem = c.moveToFirst(); hasItem; hasItem = c 
       .moveToNext()) { 

      result = " " + c.getString(iName) + "\n"; 
      result1.add(result); 
      c.moveToNext(); 
     } 
     c.close(); 
     return result1; 


    } 
} 
+1

:https://github.com/ariefbayu/android-list-form-db – ariefbayu

+0

どのようなエラーがありますか?ここに投稿してください。 –

+0

私は – user1160288

答えて

3

AndroidManifest.xmlを

、これを試してみてください
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.collabera.labs.sai.db" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".CRUDonDB" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
    <uses-sdk android:minSdkVersion="3" /> 
</manifest> 

アクティビティF代わりに、あなたは、Android向けオーマンと協力して多くの時間を節約することができます書き込みクエリのILE

import java.util.ArrayList; 

import android.app.ListActivity; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteException; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.ArrayAdapter; 

public class CRUDonDB extends ListActivity { 

    private final String SAMPLE_DB_NAME = "myFriendsDb"; 
    private final String SAMPLE_TABLE_NAME = "friends"; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


     ArrayList<String> results = new ArrayList<String>(); 
     SQLiteDatabase sampleDB = null; 

     try { 
      sampleDB = this.openOrCreateDatabase(SAMPLE_DB_NAME, MODE_PRIVATE, null); 

      sampleDB.execSQL("CREATE TABLE IF NOT EXISTS " + 
        SAMPLE_TABLE_NAME + 
        " (LastName VARCHAR, FirstName VARCHAR," + 
        " Country VARCHAR, Age INT(3));"); 

      sampleDB.execSQL("INSERT INTO " + 
        SAMPLE_TABLE_NAME + 
        " Values ('Makam','Sai Geetha','India',25);"); 
      sampleDB.execSQL("INSERT INTO " + 
        SAMPLE_TABLE_NAME + 
        " Values ('Chittur','Raman','India',25);"); 
      sampleDB.execSQL("INSERT INTO " + 
        SAMPLE_TABLE_NAME + 
        " Values ('Solutions','Collabera','India',20);"); 

      Cursor c = sampleDB.rawQuery("SELECT FirstName, Age FROM " + 
        SAMPLE_TABLE_NAME + 
        " where Age > 10 LIMIT 5", null); 

      if (c != null) { 
       if (c.moveToFirst()) { 
        do { 
         String firstName = c.getString(c.getColumnIndex("FirstName")); 
         int age = c.getInt(c.getColumnIndex("Age")); 
         results.add("" + firstName + ",Age: " + age); 
        }while (c.moveToNext()); 
       } 
      } 

      this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,results)); 

     } catch (SQLiteException se) { 
      Log.e(getClass().getSimpleName(), "Could not create or Open the database"); 
     } finally { 
      if (sampleDB != null) 
       sampleDB.execSQL("DELETE FROM " + SAMPLE_TABLE_NAME); 
       sampleDB.close(); 
     } 
    } 
} 
+0

あなたは自分のコードを試しましたか? – Lucifer

+0

あなたのヘルパークラス......... – user1160288

+0

私はこのサンプルコードをネットから入手しました。それは、私のDBhelperクラスから結果を返すには..........私は、アクティビティクラスでデータベース操作を行うのではなく、ヘルパークラス – Lucifer

0

リンク参照してください。

public long createEntry(String name) 
    { 
    ContentValues cv = new ContentValues(); 
    cv.put(C_NAME, name); 
    long a=ourDatabase.insert(TABLE, null, cv); 
    if (a > 0) 
    Log.d("Call properly", "working"); 
    else 
    Log.d("Call properly", "not working"); 
    } 

は、このようなあなたのfatchData()メソッドを使用しDbhelperクラスに正しく挿入されているデータを確認

 String[] columns = new String[] { C_ID, C_NAME }; 
    public ArrayList<HashMap<String, String>> retrieve() { 
    ArrayList<HashMap<String, String>> ar = new ArrayList<HashMap<String, String>>(); 
    try 
     { 
     Cursor c = db.query("LOGIN", strcol, null, null, null, null, null); 
     c.moveToNext(); 
     while (!c.isAfterLast()) { 
      String dat = c.getString(0); 
      String tim = c.getString(1); 
      // String due=c.getString(2); 
      // String end=c.getString(3); 
      // String cat=c.getString(4); 
      // String not=c.getString(5); 
      String titl = c.getString(2); 
    HashMap<String, String> hmap = new HashMap<String, String>(); 
    hmap.put("date", dat); 
     hmap.put("time", tim); 
    hmap.put("title", titl); 
    ar.add(hmap); 
    c.moveToNext(); 

     } 
    } catch (Exception e) { 
     // TODO: handle exception 
     e.printStackTrace(); 
    } 
    Log.e("Check ar size at ret", "" + ar.size()); 
    return ar; 
    } 

、このようなActivtyファイルのtryコードで:私はアンドロイドでSQLiteの使用方法についてのフル機能のチュートリアルを作成しました

public class List_activity extends Activity { 
Login_database login_database; 
ListView lv; 
Dialog listDialog; 
ArrayList<HashMap<String, String>> al; 
Button btn1,btn2,edt_data; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.list_view1); 
    edt_data=(Button)findViewById(R.id.btn_edt_data); 
    edt_data.setOnClickListener(new View.OnClickListener() { 

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

     } 
    }); 

    try 
    { 
     login_database=new Login_database(this); 
     login_database.open(); 

    } 
    catch (Exception e) { 
     // TODO: handle exception 
     e.printStackTrace(); 
    } 
    try { 
     al=login_database.retrieve(); 
ListAdapter ld=new SimpleAdapter(List_activity.this, al, R.layout.list_view, new       String[]{"date","time","title"}, new int[]{R.id.listDesignTxtDate,R.id.listDesignTxtTime,R.id.listDesignTxtTitle}); 
ArrayAdapter ad=new ArrayAdapter(List_activity.this,android.R.layout.simple_listitem,al); 
     lv=(ListView)findViewById(R.id.lv1); 
     lv.setAdapter(ld); 
    } catch (Exception e) { 
     // TODO: handle exception 
     e.printStackTrace(); 
    } 
関連する問題