0
Android 애플리케이션에서 문제가 발생했습니다. 내 응용 프로그램에서 특정 열 이름을 얻으려고합니다. 이것은 ListView
에서 완벽하게 작동하지만 다른 곳에서는 사용할 수 없습니다. ListView 외부에서 열을 검색 할 수 없습니다.
SimpleCursorAdapter customers = new SimpleCursorAdapter(this,R.layout.foodresult, cursor, from, to);
mListView = (ListView) findViewById(R.id.list);
mListView.setAdapter(customers);
// Define the on-click listener for the list items
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Get the cursor, positioned to the corresponding row in the result set
cursor = (Cursor) mListView.getItemAtPosition(position);
String name = cursor.getString(cursor.getColumnIndexOrThrow("customer"));
String caloriescursor = cursor.getString(cursor.getColumnIndexOrThrow("name"));
String totalfat = cursor.getString(cursor.getColumnIndexOrThrow("address"));
String satfatcursor = cursor.getString(cursor.getColumnIndexOrThrow("city"));
String state = cursor.getString(cursor.getColumnIndexOrThrow("state"));
String zipCode = cursor.getString(cursor.getColumnIndexOrThrow("zipCode"));
String carbo = cursor.getString(cursor.getColumnIndexOrThrow("carb"));
String fiber = cursor.getString(cursor.getColumnIndexOrThrow("fiber"));
String sugar = cursor.getString(cursor.getColumnIndexOrThrow("sugar"));
String protein = cursor.getString(cursor.getColumnIndexOrThrow("protein"));
String salt = cursor.getString(cursor.getColumnIndexOrThrow("salt"));
String sat_fat = cursor.getString(cursor.getColumnIndexOrThrow("city"));
그러나 ListView에 외부
, 내가 그렇게 할 수 없어 내ListView
, 나는이 있습니다. 여기 내가 다른 방법으로 한 일이 있습니다.
mDbHelper mDbHelper = new DBAdapter(DatabaseFiller.this);
mDbHelper.open();
Cursor c = mDbHelper.returnAllColumns();
String protein = c.getString(c.getColumnIndexOrThrow("protein"));
String salt = c.getString(c.getColumnIndexOrThrow("salt"));
String sat_fat = c.getString(c.getColumnIndexOrThrow("city"));
다음은 returnAllColumns() 메소드입니다.
java.lang.IllegalArgumentException: column 'protein' does not exist
at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:303)
at com.example.foodsaver2.DatabaseFiller$1.onClick(DatabaseFiller.java:142)
at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:941)
at android.widget.AdapterView.performItemClick(AdapterView.java:299)
at android.widget.AbsListView.performItemClick(AbsListView.java:1113)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:2904)
at android.widget.AbsListView$3.run(AbsListView.java:3638)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
그래서 내가 잘못 뭐하는 거지 :
public Cursor returnAllColumns() {
Cursor cursor = mDb.query(FTS_VIRTUAL_TABLE,
new String[] {KEY_ROWID,
KEY_NAME,
KEY_CUSTOMER}
, null, null, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
}
return cursor;
}
여기 내 로그 캣입니다. SQLite에 대한 사전 경험이 없습니다. 나는 잠시 동안 벽에 머리를 두드렸다. 이 문제와 관련된 도움을 주시면 감사하겠습니다. 쿼리 메소드 호출에
new String[] {KEY_ROWID, KEY_NAME, KEY_CUSTOMER}
를 사용하여
try cursor.moveToPosition (position), 나에게 다시 피드 –