2012-08-10 79 views
0

我是android新手,使用sqlite在數據庫中插入數據,並在自定義列表視圖中使用這些數據。 enter image description here單擊列表視圖中的項目時不會進行下一個活動。

我想:當我編輯與編輯按鈕,在接下來的活動表明該行字符串的數據,但是,在每一行的編輯,但顯示第一行字符串通過圖像數據.. u能esily瞭解發生的問題在新的活動頁面的行名,而我點擊編輯.. 刪除排當我按下刪除..幫助我..

的Java編輯清單文件

public class EditLIST extends Activity { 


    private AndroidSQLite mySQLiteAdapter ; 
final static String EXTRA_MESSAGE = "edit.list.message"; 
public void onClick (View view) { 


    Intent intent = new Intent (this,display.class); 
    TextView textView=(TextView) findViewById(R.id.textView1); 
    String message=textView.getText().toString(); 


    //data.putString("thetext",text); 
    intent.putExtra(EXTRA_MESSAGE,message); 
    startActivity(intent); 
} 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_edit_list); 
     ListView listContent = (ListView)findViewById(R.id.listView1); 



     mySQLiteAdapter = new AndroidSQLite(this); 
     mySQLiteAdapter.openToWrite(); 
     mySQLiteAdapter.deleteAll(); 

     mySQLiteAdapter.insert("umesh"); 
     mySQLiteAdapter.insert("kalpesh"); 
     mySQLiteAdapter.insert("manish"); 


     mySQLiteAdapter.close(); 

     mySQLiteAdapter = new AndroidSQLite(this); 
     mySQLiteAdapter.openToRead(); 

     Cursor cursor = mySQLiteAdapter.queueAll(); 
     startManagingCursor(cursor); 

     String[] from = new String[]{AndroidSQLite.KEY_FNAME}; 
     int[] to = new int[]{R.id.textView1}; 




     SimpleCursorAdapter cursorAdapter = 
     new SimpleCursorAdapter(this, R.layout.button, cursor, from, to); 


        listContent.setAdapter(cursorAdapter); 



    } 


    } 

AndroidSQLite.java文件

package edit.list;

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.database.sqlite.SQLiteDatabase.CursorFactory; 

public class AndroidSQLite { 

public static final String MYDATABASE_NAME = "abncd"; 
public static final String MYDATABASE_TABLE = "zxc"; 
public static final int MYDATABASE_VERSION = 1; 
public static final String KEY_ID = "_id"; 
public static final String KEY_FNAME = "FNAME"; 



//create table MY_DATABASE (ID integer primary key, Content text not null); 
private static final String SCRIPT_CREATE_DATABASE = 
"create table " + MYDATABASE_TABLE + " (" 
+ KEY_ID + " integer primary key autoincrement, " 
+ KEY_FNAME + " text not null);"; 

private SQLiteHelper sqLiteHelper; 
private SQLiteDatabase sqLiteDatabase; 

private Context context; 

public AndroidSQLite(Context c){ 
context = c; 
} 

public AndroidSQLite openToRead() throws android.database.SQLException { 
sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null, MYDATABASE_VERSION); 
sqLiteDatabase = sqLiteHelper.getReadableDatabase(); 
return this; 
} 

public AndroidSQLite openToWrite() throws android.database.SQLException { 
sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null, MYDATABASE_VERSION); 
sqLiteDatabase = sqLiteHelper.getWritableDatabase(); 
return this; 
} 

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

public long insert(String fname){ 

ContentValues contentValues = new ContentValues(); 

contentValues.put(KEY_FNAME, fname); 

return sqLiteDatabase.insert(MYDATABASE_TABLE, null, contentValues); 
} 

public int deleteAll(){ 
return sqLiteDatabase.delete(MYDATABASE_TABLE, null, null); 
} 

public Cursor queueAll(){ 
String[] columns = new String[]{KEY_ID, KEY_FNAME}; 
Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE, columns, 
    null, null, null, null, null); 

return cursor; 
} 

public class SQLiteHelper extends SQLiteOpenHelper { 

public SQLiteHelper(Context context, String name, 
    CursorFactory factory, int version) { 
super(context, name, factory, version); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
// TODO Auto-generated method stub 
db.execSQL(SCRIPT_CREATE_DATABASE); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
// TODO Auto-generated method stub 

} 

} 

} 

display.java

public class display extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.display); 


       // Get the message from the intent 
       Intent intent = getIntent(); 
       String message = intent.getStringExtra(EditLIST.EXTRA_MESSAGE); 

       // Create the text view 
       EditText editText = new EditText(this); 
       editText.setTextSize(40); 
       editText.setText(message); 

       // Set the text view as the activity layout 
       setContentView(editText); 
       } 
    public boolean onCreateOptionsMenu (Menu menu) 
     { 
      MenuInflater inflater = getMenuInflater(); 
      inflater.inflate(R.menu.activity_edit_list,menu); 
      return true; 
     } 

} 

回答

0

我不知道如果我理解正確。據我瞭解,當你點擊編輯時,你總是從第一個項目獲取數據,而不管你實際點擊了哪個項目?在這種情況下,我認爲這個問題是在這裏:

TextView textView=(TextView) findViewById(R.id.textView1); 

你在整個列表搜索R.id.textView1,只被返回的第一個項目。您只需在所點擊的項目內搜索:

TextView textView=(TextView) view.findViewById(R.id.textView1); 

其中view是onClick函數的參數。

正如我所說我不確定這是否是問題,但它看起來像一個問題。

+0

上的TextView的地方刪除ID號爲1,我不能使用ListView, 所以請位置我怎樣才能CONTRL – Umesh 2012-08-11 05:47:05

+0

行也許每一個編輯按鈕,AndroidSQLite應延長ListActivity而不僅僅是Activity並覆蓋onListItemClick。可能需要一點工作,但這是最簡單的方法。 http://developer.android.com/reference/android/app/ListActivity.html#onListItemClick(android.widget.ListView,android.view.View,int,long) – 2012-08-12 21:47:28

+0

我的textview疑問很清楚,但是如何刪除一個單行..從listview刪除按鈕.. – Umesh 2012-08-13 04:10:46

0

我認爲你必須與你的刪除代碼 問題就會像..

公衆詮釋delete_byID(INT ID){
sqLiteDatabase.delete(MYDATABASE_TABLE,KEY_ROWID + 「=」 + 1,空值) ; return -1; }

將從表

相關問題