Вам необходимо включить больше информации в свой пост; код показывает переменные, которые используются, но мы не знаем, что это такое (uri, project, sQueryid и т. д.). У вас есть sQueryid String, а также вы пытаетесь отправить значение String переменной с именем queryid в метод parseInt - это те же переменные с опечаткой? Если нет, попробуйте использовать альтернативное наименование, чтобы оно не вызывало путаницы.
Мы также не можем видеть, в каком методе находится этот код; Вы упоминаете, что у вас возникают проблемы при нажатии на ListView, но где находится код? Если это так, то вызовы moveToFirst () и / или moveToNext () для вашего курсора - это не то, что вам нужно, и вы бы не получили курсор, вызвав функцию managedQuery. Вместо этого вы хотите использовать информацию о положении, переданную методу и адаптеру ListView. Немного больше вашего кода, я мог бы привести пример.
Если вы просто пытаетесь перебрать все строки в вашем запросе курсора, вы, вероятно, захотите сделать что-то вроде этого:
while (c.moveToNext()) {
String name = c.getString(c.getColumnIndex(ContentProviderMetaData.DepotTableMetaData.ITEM_NAME));
String amount = c.getString(c.getColumnIndex(ContentProviderMetaData.DepotTableMetaData.ITEM_AMOUNT));
// ...
// do something with the data for this row
}
Редактировать (в соответствии с кодом, указанным в вашем комментарии):
Я думаю, что ваша проблема связана с идентификатором, который вы передаете парню ShowActivity
. В вашем классе ShowActivity создайте переменную уровня класса для вашего Cursor
, который вы используете для SimpleCursorAdapter
для ListView
, чтобы вы могли получить к нему доступ другими методами. Итак, что-то вроде:
public class ShowActivity extends ListActivity implements OnItemClickListener {
Cursor mCursor;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ...
mCursor = managedQuery(ContentProviderMetaData.DepotTableMetaData.CONTENT_URI, projection, null, null, ContentProviderMetaData.DepotTableMetaData.DEFAULT_SORT_ORDER);
// ...
SimpleCursorAdapter simpleadapter = new SimpleCursorAdapter(this,R.layout.list_entry, mCursor, columns, to);
// ...
Тогда ваш onItemClick
метод должен выглядеть примерно так:
public void onItemClick(AdapterView<?> adapterView, View target, int position, long id) {
Log.d("ShowActivity", "clicked @ " + position);
mCursor.moveToPosition(position);
final String itemId = mCursor.getString(mCursor.getColumnIndex(ContactsContract.Contacts._ID));
Intent openAdvanced = new Intent(ShowActivity.this,AdvancedViewActivity.class);
openAdvanced.putExtra("ID", itemId);
startActivity(openAdvanced);
}