Когда я обновляю выбранную строку, она обновляет неправильную строку, например, если я выбираю вторую строку, она обновит первую строку.listview-SQLite обновление неправильной строки
Вот мой код внутри контроллера
Public boolean updateContact (String id, String category, String code, String description, String unit, String quantity) {
SQLiteDatabase database = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(FeedReaderContract.FeedEntry.Col_2 , category);
values.put(FeedReaderContract.FeedEntry.Col_3 , code);
values.put(FeedReaderContract.FeedEntry.Col_4 , description);
values.put(FeedReaderContract.FeedEntry.Col_5 , unit);
values.put(FeedReaderContract.FeedEntry.Col_6 , quantity);
// updating row
database.update(TABLE_NAME ,values , FeedReaderContract.FeedEntry.Col_1 + " = ?" , new String[]{id});
return true;
}
public ArrayList<HashMap<String, String>> getAllProducts() {
ArrayList<HashMap<String, String>> proList;
proList = new ArrayList<HashMap<String, String>>();
String selectQuery = "SELECT * FROM Countsheet";
SQLiteDatabase database = this.getWritableDatabase();
Cursor cursor = database.rawQuery(selectQuery, null);
if (cursor != null && cursor.moveToFirst()) {
do {
HashMap<String, String> map = new HashMap<String, String>();
map.put("Category", cursor.getString(1));
map.put("Code", cursor.getString(2));
map.put("Description", cursor.getString(3));
map.put("Unit", cursor.getString(4));
map.put("Quantity", cursor.getString(5));
proList.add(map);
} while (cursor.moveToNext());
cursor.close();
}
return proList;
}
дб Вот моя кнопка OnClick обновить ListView:
Public void adddata(){
btnadddata.setOnClickListener(
new View.OnClickListener(){
@Override
public void onClick(View v) {
boolean i = myDb.updateContact(passid , passedVar , passcode, passdesc, passunit , quantitys.getText().toString());
if (i == true)
Toast.makeText(Main2Activity.this , "Data Inserted" , Toast.LENGTH_SHORT).show();
else
Toast.makeText(Main2Activity.this , "Data Not Inserted" , Toast.LENGTH_SHORT).show();
}
}
);
}
Откуда вы получаете 'passid'? –
Попробуйте этот database.update (TABLE_NAME, значения, FeedReaderContract.FeedEntry.Col_1 + "=" + id, null); – VVB
привет спасибо за ваш ответ, но все еще не работает, я получил passid с использованием намерения получить string.valueof (id), затем я использую getintent, чтобы получить значение id и приравнять его к textview passid – RaRa