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

}

}

}

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;
        }

}
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 に答える