2015-08-11 4 views
0

Я борюсь с небольшим количеством моего кода для моей базы данных, мне удалось получить доступ к номеру идентификатора элемента, который я нажимаю, но я больше не могу получить доступ к данным? Как я могу это сделать?Доступ к строке базы данных SQLite

К примеру теперь у меня есть мой номер документа я хочу, чтобы отобразить все эти данные в этой строке в отдельном окне, но я не могу показаться, чтобы вытащить данные с помощью курсора

String itemselect = String.valueOf(spinner.getSelectedItem()); 
Toast.makeText(Developer.this, itemselect, Toast.LENGTH_LONG).show(); 
final Cursor cursor = mydb.getAllRows(itemselect); 
startManagingCursor(cursor); 

String[] fromfieldnames = new String[]{ 
      DatabaseHelper.COL_1, DatabaseHelper.COL_2, DatabaseHelper.COL_3, 
      DatabaseHelper.COL_4, DatabaseHelper.COL_5, DatabaseHelper.COL_6 }; 
int[] toviewids = new int[]{R.id.textone, R.id.texttwo, R.id.textthree, R.id.textfour, R.id.textfive, R.id.textsix}; 
final SimpleCursorAdapter mycursoradapter = new SimpleCursorAdapter(this, R.layout.listtext, cursor, fromfieldnames, toviewids); 
listView.setAdapter(mycursoradapter); 

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
    @Override 
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
     Long string = mycursoradapter.getItemId(position); 
     Toast.makeText(Developer.this, string.toString(),Toast.LENGTH_LONG).show(); 
     return true; 
    } 
}); 

Там нет ошибок в этот код мне просто нужно попробовать и добавить эту дополнительную функциональность

Спасибо заранее М.

ответ

1

Данные хранятся в вашем Cursor в позиции строки position в onItemLongClick. Используйте метод moveToPosition() на cursor и извлекать значение:

String one, two, three; 

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
    @Override 
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
     cursor.moveToPosition(position); 
     one = cursor.getString(cursor.getColumnIndex(DatabaseHelper.COL_1)); 
     two = cursor.getString(cursor.getColumnIndex(DatabaseHelper.COL_2)); 
     // Etc... 
    } 
}; 
+0

Это отлично сработало для того, что мне нужно, спасибо большое – Marca

+0

@Marca Рад это услышать, пожалуйста, отметьте мой ответ, как принято, чтобы показать кому-то еще, что попадает на этот пост, что это решение работает. – PPartisan

1

использовать курсор следующим образом:

public Cursor getRowByID(int ID) { 

    SQLiteDatabase db = this.getReadableDatabase(); 
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); 

    String [] sqlSelect = {"id, col_1, col_2, col_3"}; 
    String sqlTables = "your_table"; 
    String filter = "id= "+ID; 

    qb.setTables(sqlTables); 
    Cursor c = qb.query(db, sqlSelect, filter,null, null, 
     null, null, null); 

    c.moveToFirst(); 
    return c; 

     } 
+0

Это будет хорошо для будущего использования спасибо большого ниже ответ, что мне нужно прямо сейчас, но я буду использовать это для будущей благодарственной реализации вы очень много – Marca

+0

Добро пожаловать. – Boody

0
public Cursor Retrive_SubCategory1(String id) { 
     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor cursor = db.rawQuery("select " 
       + "column_Name1 , "+"column_name2 " + " from " 
       +"table_name " + " where " 
       + "column_name " + "='" + id+ "'", 
       null); 
     return cursor; 
    } 
Смежные вопросы