2010-06-22 42 views
5
package one.two; 


import java.util.ArrayList; 
import java.util.List; 

import android.app.ListActivity; 
import android.database.Cursor; 
import android.inputmethodservice.Keyboard.Row; 
import android.os.Bundle; 
import android.view.Menu; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 

public class List_View extends ListActivity { 

    private ListView lv; 
    private TextView toptext; 
    private TextView bottomtext; 

    DBAdapter db = new DBAdapter(this); 

    public void onCreate(Bundle icicle) 
    { 
     super.onCreate(icicle); 
     setContentView(R.layout.list_main); 
     DBAdapter db = new DBAdapter(this); 
     getData(); 

     toptext = (TextView) findViewById(R.id.toptext); 
     bottomtext = (TextView) findViewById(R.id.bottomtext); 


    } 

    private void getData() { 

     db.open(); 

     List<String> items = new ArrayList<String>(); 

     Cursor c = db.getAllEntry(); 
     c.moveToFirst(); 

     toptext.setText("Date: "+c.getString(4)); 
     bottomtext.setText("Title: "+c.getString(1)); 



     ArrayAdapter<String> entries = new ArrayAdapter<String>(this, R.layout.view_list, items); 
     setListAdapter(entries); 

     db.close(); 
    } 

} 

Tôi không thể đặt dữ liệu từ cơ sở dữ liệu của mình vào ListView.Nhận dữ liệu được lưu trữ từ cơ sở dữ liệu vào ListView.

Đây là mã cơ sở dữ liệu của tôi:

package one.two; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.util.Log; 

public class DBAdapter 
{ 
//values for the login table 
public static final String KEY_ROWID = "_id"; 
public static final String KEY_USER = "user"; 
public static final String KEY_PASSWORD = "pass"; 
public static final String KEY_NUMBER ="no"; 

//Values for the entry table 
public static final String KEY_ROWID2 = "_id2"; 
public static final String KEY_TITLE = "title"; 
public static final String KEY_ENTRY = "entry"; 
public static final String KEY_MOOD = "mood"; 
public static final String KEY_DATE = "date"; 
public static final String KEY_TIME = "time"; 

private static final String TAG = "DBAdapter"; 
//declare Database name, tables names 
private static final String DATABASE_NAME = "Database3"; 
private static final String DATABASE_TABLE = "Login"; 
private static final String DATABASE_TABLE_2 = "Entry"; 
private static final int DATABASE_VERSION = 1; 

//declares the rules for the database tables 
private static final String DATABASE_CREATE = 
    "create table login (_id integer primary key autoincrement, " 
    + "user text not null, pass text not null," 
    + " no integer not null);"; 

private static final String DATABASE_CREATE_2 = 
    "create table entry (_id2 integer primary key autoincrement, " 
    + "title text,entry text, mood text not null, date text not null, " 
    + "time text not null);"; 


private final Context context; 

private DatabaseHelper DBHelper; 
private SQLiteDatabase db; 

public DBAdapter(Context ctx) 
{ 
    this.context = ctx; 
    DBHelper = new DatabaseHelper(context); 
} 

private static class DatabaseHelper extends SQLiteOpenHelper 
{ 
    DatabaseHelper(Context context) 
    { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    //Create the tables with the rules we set. 
    @Override 
    public void onCreate(SQLiteDatabase db) 
    { 
     db.execSQL(DATABASE_CREATE); 
     db.execSQL(DATABASE_CREATE_2); 
    } 

    //OnUpgrade is only for use when u changed the database's version to 2 etc. 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, 
    int newVersion) 
    { 
     Log.w(TAG, "Upgrading database from version " + oldVersion 
       + " to " 
       + newVersion + ", which will destroy all old data"); 
     db.execSQL("DROP TABLE IF EXISTS titles"); 
     onCreate(db); 
    } 
}  

//---opens the database--- 
public DBAdapter open() throws SQLException 
{ 
    db = DBHelper.getWritableDatabase(); 
    return this; 
} 

//---closes the database---  
public void close() 
{ 
    DBHelper.close(); 
} 

//Method for inserting login details, can be used in other java files when DBAdapter is 
//declared in the java file. e.g. DBAdapter db = new DBAdapter(this); 
public long insertLogin(String user, String pass, String no) 
{ 
    ContentValues initialValues = new ContentValues(); 
    initialValues.put(KEY_USER, user); 
    initialValues.put(KEY_PASSWORD, pass); 
    initialValues.put(KEY_NUMBER, no); 
    return db.insert(DATABASE_TABLE, null, initialValues); 
} 


public long insertEntry(String title, String entry, String mood, String date, String time) 
{ 
    ContentValues initialValues = new ContentValues(); 
    initialValues.put(KEY_TITLE, title); 
    initialValues.put(KEY_ENTRY, entry); 
    initialValues.put(KEY_MOOD, mood); 
    initialValues.put(KEY_DATE, date); 
    initialValues.put(KEY_TIME, time); 
    return db.insert(DATABASE_TABLE_2, null, initialValues); 
} 


//---deletes a particular title--- 
public boolean deleteLogin(long rowId) 
{ 
    return db.delete(DATABASE_TABLE, KEY_ROWID + 
      "=" + rowId, null) > 0; 
} 

public boolean deleteEntry(long rowId2) 
{ 
    return db.delete(DATABASE_TABLE_2, KEY_ROWID2 + 
      "=" + rowId2, null) > 0; 
} 

//method for retrieving all the inputs from database 
public Cursor getAllLogin() 
{ 
    return db.query(DATABASE_TABLE, new String[] { 
      KEY_ROWID, 
      KEY_USER, 
      KEY_PASSWORD,    
      KEY_NUMBER,}, 
      null, 
      null, 
      null, 
      null, 
      null, 
      null); 
} 



public Cursor getAllEntry() 
{ 
    return db.query(DATABASE_TABLE_2, new String[] { 
      KEY_ROWID2, 
      KEY_TITLE, 
      KEY_ENTRY, 
      KEY_MOOD, 
      KEY_DATE, 
      KEY_TIME}, 
      null, 
      null, 
      null, 
      null, 
      null, 
      null); 
} 


//---retrieves a particular title--- 
public Cursor getLogin(long rowId) throws SQLException 
{ 
    Cursor mCursor = 
      db.query(true, DATABASE_TABLE, new String[] { 
        KEY_ROWID, 
        KEY_USER, 
        KEY_PASSWORD, 
        KEY_NUMBER}, 
        KEY_ROWID + "=" + rowId, 
        null, 
        null, 
        null, 
        null, 
        null); 
    if (mCursor != null) { 
     mCursor.moveToFirst(); 
    } 
    return mCursor; 
} 

public Cursor getEntry(long rowId2) throws SQLException 
{ 
    Cursor mCursor = 
      db.query(true, DATABASE_TABLE_2, new String[] { 
        KEY_ROWID2, 
        KEY_TITLE, 
        KEY_ENTRY, 
        KEY_MOOD, 
        KEY_DATE, 
        KEY_TIME}, 
        KEY_ROWID2 + "=" + rowId2, 
        null, 
        null, 
        null, 
        null, 
        null); 
    if (mCursor != null) { 
     mCursor.moveToFirst(); 
    } 
    return mCursor; 
} 


//---updates a title--- 
public boolean updateLogin(long rowId, String user, 
String pass, String no) 
{ 
    ContentValues args = new ContentValues(); 
    args.put(KEY_USER, user); 
    args.put(KEY_PASSWORD, pass); 
    args.put(KEY_NUMBER, no); 
    return db.update(DATABASE_TABLE, args, 
        KEY_ROWID + "=" + rowId, null) > 0; 
} 

public boolean updateEntry(long rowId,String title, String entry, 
     String mood, String date, String time) 
     { 
      ContentValues args = new ContentValues(); 
      args.put(KEY_TITLE, title); 
      args.put(KEY_ENTRY, entry); 
      args.put(KEY_MOOD, mood); 
      args.put(KEY_DATE, date); 
      args.put(KEY_TIME, time); 
      return db.update(DATABASE_TABLE, args, 
          KEY_ROWID + "=" + rowId, null) > 0; 
     } 


} 

Đã không thể hiển thị. Hy vọng các bạn có thể giúp tôi!

+0

Bạn đã hỏi chính xác điều tương tự trong: http://stackoverflow.com/questions/3090680/using-a-listadapter-to-show-database-data – Janusz

+0

Tôi ' m xin lỗi vì tôi không giỏi ngữ pháp! – UserA

+0

Bạn có thể vui lòng cho chúng tôi xem tệp 'res/layout/view_list.xml' của bạn không? – Cristian

Trả lời

-1

Bạn không điền danh sách có dữ liệu bạn đã truy xuất. Và, bạn nên sử dụng SimpleCursorAdapter trong những trường hợp:

private void getData() { 

    db.open(); 

    List<String> items = new ArrayList<String>(); 

    Cursor c = db.getAllEntry(); 
    c.moveToFirst(); 

    ListAdapter adapter=new SimpleCursorAdapter(this, 
        R.layout.view_list, c, 
        new String[] {"date", "title"}, 
        new int[] {R.id.toptext, R.id.bottomtext}); 
    setListAdapter(adapter); 

    setListAdapter(entries); 

    db.close(); 
} 

Trong trường hợp này tôi đoán bảng của bạn có một cột tên là date và một tên title. Hãy xem ví dụ này để tham khảo thêm: SimpleCursorAdapters and ListViews

+0

Cảm ơn bạn rất nhiều. Tôi sẽ thử! :> Tôi thực sự là một noobie trong android! – UserA

Các vấn đề liên quan