我需要从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);
}
}
你应该改变这一行
int id= ((int) listView.getItemIdAtPosition(i));
有了这个
long id = adapterView.getItemIdAtPosition(i);
我希望这可以解决你的问题。
根据Android官方文档here,没有关于此功能的目的的定义。它似乎在Adapter中调用getItemId(),getItemId()在SQLite中返回Id的值。
我想你需要使用SimpleCursorAdapter来处理SQLite。