0

我是 android 新手,使用 sqlite 在数据库中插入数据,并在自定义列表视图中使用这些数据。当我在下一个活动中使用编辑按钮编辑数据时会出现问题显示行字符串但是,在每一行编辑中但显示第一行字符串的数据..通过图像你可以很容易地理解: 在此处输入图像描述

当我点击编辑时,我想要新活动页面中的行名。当我按下删除时删除行..帮帮我..

编辑列表 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 文件

包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

}

}

}

显示.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;
        }

}
4

2 回答 2

0

我不确定我是否理解正确。据我了解,当您单击编辑时,无论您实际单击了哪个项目,您总是从第一个项目中获取数据?在那种情况下,我认为问题就在这里:

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

您正在整个列表中搜索 R.id.textView1 并且只返回第一项。您只需要在单击的项目内进行搜索:

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

其中 view 是 onClick 函数的参数。

正如我所说,我不确定这是否是问题,但它看起来像一个问题。

于 2012-08-10T13:10:16.140 回答
0

我认为您的删除代码有问题,就像..

public int delete_byID(int id) {
sqLiteDatabase.delete(MYDATABASE_TABLE,KEY_ROWID + "=" +1,null) ; 返回-1;}

这将从表中删除 id 号 1

于 2012-08-15T08:26:41.857 回答