2016-10-09 10 views
0

Я использую AlertDialog, который отображает единый список выбора, основанный на SimpleCursorAdapter:OnItemClick Слушатель для AlertDialog.Builder

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
      builder.setAdapter(cursorAdapter, new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialogInterface, int i) { 
        //here I need to access the selected item using a cursor 
       } 
      }) 

Когда элемент списка щелкнуло в моем диалоге предупреждения, функция OnClick вызывается. Однако он предоставляет мне только позицию щелкнутого элемента в отображаемом списке. Поскольку я хочу получить доступ к моей базе данных SQLite для выбранного элемента, мне нужен курсор. Итак, как я могу называть 'setOnItemClickListener' в построителе? Что мне нужно, это:

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    Cursor cursor = (Cursor) parent.getItemAtPosition(position); 
    ... 

Моя проблема заключается в том, что я не сам список объектов для вызова «setOnItemClickListener». Есть ли способ получить объект списка, который используется AlertDialog?

Или есть ли другой способ получить курсор только от знания позиции позиции в списке?

+0

У вас ровно 11 полных последователей по всему миру за теги, которые вы добавили в свой вопрос. Вы должны добавить теги для среды, в которой вы работаете (Java, C#, что-то еще?), Иначе вы не получите ответа в ближайшее время. –

ответ

0

Если вы держите ссылку на ваш адаптер курсора, getItem(int position) должен сделать трюк.

@Override 
public void onClick(DialogInterface dialog, int which) { 
    Cursor c = cursorAdapter.getItem(which); 
    // do something with the cursor 
} 

Внутренне, это звонит cursor.moveToPosition(int), который вы могли бы использовать, если вы держите на курсор. (не забудьте закрыть его!)

+0

Большое спасибо, что решает проблему! – WolfTT