我已經編寫了一個程序,在兩個自動完成文本視圖中自動設置文本,基於選擇單個自動完成文本視圖,但獲取錯誤。 E/CursorWindow(7974):無法從具有2行3列的CursorWindow讀取第0行第-1列。根據另一個自動完成文本視圖的選擇自動設置文本
cursor = listHelper.getVehicleData();
int[] vehicleNoTo = new int[] { android.R.id.text1 };
String[] vehicleNoFrom = new String[] {
DbListHelper.REGISTRATION_NO };
SimpleCursorAdapter driverAdapter = new
SimpleCursorAdapter(getBaseContext(),
android.R.layout.simple_list_item_1, cursor,
vehicleNoFrom, vehicleNoTo);
driverAdapter.setCursorToStringConverter(new
CursorToStringConverter()
{
public CharSequence convertToString(Cursor cur)
{
int index =
cur.getColumnIndex(DbListHelper.REGISTRATION_NO);
return cur.getString(index);
}
});
editVehicleNo1.setAdapter(driverAdapter);
editVehicleNo1.setThreshold(1);
driverAdapter.notifyDataSetChanged();
上面的代碼完全適用於一個autocompletetextview - 表示登記號的車輛,當我開始輸入。
但我想要的是,當我選擇任何車輛時,驅動程序名稱(自動完成)和驅動程序代碼(自動完成)應該設置。
所以,我對於上述邏輯編寫的,但在這裏得到一個錯誤:
editVehicleNo1.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int
before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
driverName1 =cursor.getString(cursor.getColumnIndex
(DbListHelper.DRIVER_NAME));
driverCode1 = cursor.getString(cursor.getColumnIndex
(DbListHelper.DRIVER_CODE));
editDriverName.setText(driverName1);
editDriverCode.setText(driverCode1);
}
});
SqliteHelper.java車輛數據庫
public long insertVehicleData(String vehicle_code,String
registration_no,String driver_code,String driver_name) {
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(DbListHelper.VEHICLE_CODE, vehicle_code);
values.put(DbListHelper.REGISTRATION_NO, registration_no);
values.put(DbListHelper.DRIVER_CODE, driver_code);
values.put(DbListHelper.DRIVER_NAME, driver_name);
long id = db.insert(DbListHelper.TABLE_NAME_VEHICLE, null, values);
return id;
}
public Cursor getVehicleData(){
SQLiteDatabase db = helper.getWritableDatabase();
String[] columns = {
DbListHelper.UID,DbListHelper.VEHICLE_CODE,DbListHelper.REGISTRATION_NO
,DbListHelper.DRIVER_CODE,DbListHelper.DRIVER_NAME};
Cursor cursor = db.query(DbListHelper.TABLE_NAME_VEHICLE, columns, null,
null, null, null, null);
StringBuffer buffer = new StringBuffer();
while (cursor.moveToNext()) {
int index0 = cursor.getColumnIndex(DbListHelper.UID);
String cid0 = cursor.getString(index0);
int index1 = cursor.getColumnIndex(DbListHelper.VEHICLE_CODE);
String cid1 = cursor.getString(index1);
int index2 = cursor.getColumnIndex(DbListHelper.REGISTRATION_NO);
String cid2 = cursor.getString(index2);
int index3 = cursor.getColumnIndex(DbListHelper.DRIVER_CODE);
String cid3 = cursor.getString(index3);
int index4 = cursor.getColumnIndex(DbListHelper.DRIVER_NAME);
String cid4 = cursor.getString(index4);
buffer.append(cid0 + " " + cid1 + " " + cid2 + " " + cid3 + " " +
cid4 + "\n");
}
return cursor;
}
什麼是editDriverName&editDriverCode?你究竟想達到什麼目的? – pskink
@pskink editDriverName和editDriverCode是autocompletetextview,而editVehicleNo1也是autocompletetextview,當我開始在editvehicleno1中輸入時,下拉菜單有一個車輛號列表,所以當我選擇任何車輛號時,我想要的是驅動程序名稱和驅動程序代碼應該自動填寫 –
我沒有明白它:爲什麼你設置它們,但後來他們可以改變?還有什麼'StringBuffer buffer = new StringBuffer();'用於? – pskink