在另一个活动中单击项目时从列表视图中获取id

时间:2011-11-10 14:56:13

标签: android listview android-activity

下面的代码生成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开头)。 请纠正我哪里出错了。 在此先感谢!!

2 个答案:

答案 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);

代替。

相关问题