listview中的getItemIdAtPosition()未显示

问题描述 投票:1回答:2

我需要从listView获取getItemIdAtPosition()以从sqlite数据库获取记录的id。当我在任何项目上单击listView时,它总是显示“null”而不显示id。

这是代码:

       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);
            }
        });

这个activity2.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);
}

}
java android listview onitemclicklistener
2个回答
1
投票

你应该改变这一行

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

有了这个

  long id = adapterView.getItemIdAtPosition(i);

我希望这可以解决你的问题。


0
投票

根据Android官方文档here,没有关于此功能的目的的定义。它似乎在Adapter中调用getItemId(),getItemId()在SQLite中返回Id的值。

我想你需要使用SimpleCursorAdapter来处理SQLite。

© www.soinside.com 2019 - 2024. All rights reserved.