下面的代码生成ListView
public class MyList extends ListActivity {
static final String[] COUNTRIES = new String[] {LONG LIST OF COUNTRIES};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this,R.layout.main,COUNTRIES));
ListView lv=getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent,View view,int position,long id){
Intent i=new Intent(MyList.this,Another.class);
Bundle b = new Bundle();
b.putInt("id", (int)id);
intent.putExtras(b);
startActivity(intent);
}
});
}
}
另一项活动是
public class Another extends Activity{
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.mainseocnd);
Bundle b=new Bundle();
int value= b.getInt("id",0);
TextView tv=(TextView)findViewById(R.id.text);
tv.setText(""+value);
}
}
现在当我点击任何列表项时说id-5它总是显示0 我想得到listview项目ID,如果用户单击列表中的第二项,则另一个acivity应显示1(b / c以0开头)。 请纠正我哪里出错了。 在此先感谢!!
答案 0 :(得分:1)
在第二个活动而不是
Bundle b=new Bundle();
int value= b.getInt("id",0);
使用
int value = icicle.getInt("id",0);
这将为您提供解决方案...... :)
答案 1 :(得分:1)
检索值的方法是错误的:
Bundle b=new Bundle();
int value= b.getInt("id",0);
当没有(它是新的)时,你创建一个新的bundle并尝试从中获取一个值。 您必须获得随该活动的启动意图提供的额外内容。尝试
int value = getIntent().getIntExtra("id", 0);
代替。