getItemIdAtPosition () в списке не отображается - PullRequest
1 голос
/ 01 апреля 2019

Мне нужно получить getItemIdAtPosition () из listView, чтобы получить идентификатор записей из базы данных sqlite. Когда я нажимаю на listView для любого элемента, он всегда показывает «ноль», не показывая идентификатор.

это код:

       listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

               int id= ((int) listView.getItemIdAtPosition(i));

                //create our intent, as per usual
                Intent intent=new Intent(Tutorial10.this, Activity2.class);

                intent.putExtra(ID_EXTRA, id);
                startActivity(intent);
            }
        });

Это занятие2.java

public class Activity2 extends Activity{

String passedVar=null;
private TextView passedView=null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.act2);

    //Get our passed variable from our intent's EXTRAS
    passedVar=getIntent().getStringExtra(Tutorial10.ID_EXTRA);
    //find out text view
    passedView=(TextView)findViewById(R.id.passed);
    //display our passed variable!!!
    passedView.setText("YOU CLICKED ON="+passedVar);
}

}

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

Вы должны изменить эту строку

  int id= ((int) listView.getItemIdAtPosition(i));

с этим

  long id = adapterView.getItemIdAtPosition(i);

Я надеюсь, что это решит вашу проблему.

0 голосов
/ 01 апреля 2019

Согласно официальному документу Android здесь , определение назначения этой функции отсутствует. Кажется, он вызывает getItemId () в адаптере, а getItemId () возвращает значение Id в SQLite.

Полагаю, вам нужно использовать SimpleCursorAdapter для работы с SQLite.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...