android setOnItemClickListener 无法使用 intent 传递数据
android setOnItemClickListener can't use intent to pass data
我使用 listview 并重写 setOnItemClickListener.In setOnItemClickListener(),我使用 intent 将数据传递给另一个 activity。但另一个 activity 收到空值。
代码是:
- QuerBook.java(发送数据)
public class QueryBook 扩展 Activity {
private List<BookItem> bookList = new ArrayList<BookItem>();
private Bundle saved;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
saved = savedInstanceState;
setContentView(R.layout.querybook);
Log.d("Activity1","haha"+getClass().getSimpleName());
queryBook();
BookAdapter adapter = new BookAdapter(QueryBook.this, R.layout.bookitem, bookList);
ListView listView = (ListView) findViewById(R.id.list_view);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.d("Activity1",getClass().getSimpleName());
// TODO Auto-generated method stub
BookItem bookItem = bookList.get(position);
id = bookItem.getId();
Intent intent = new Intent(QueryBook.this, BookDetail.class);
intent.putExtra("newid",id);
//Log.d("bookid","hah id = "+id);
startActivity(intent);
}
});
}
2.BookDetail.java(接收数据)
public class BookDetail 扩展 Activity {
private List<BookItem> bookitemList = new ArrayList<BookItem>();
private int id;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bookdetail);
Log.d("Activity",getClass().getSimpleName());
Intent intent = getIntent();
id = intent.getIntExtra("newid",-1);
Log.d("bookid","book get id is "+id);
}
The 'id' is always return -1;
在onItemClick()
中变量id
被定义为long
。实际上它是签名中的一个参数:
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
所以当你打电话给
intent.putExtra("newid",id);
您实际上是将 long
项放入 "extras" 捆绑包中,而不是 int
。
这就是为什么当您调用 getIntExtra()
时得到 -1,因为类型不匹配。
我使用 listview 并重写 setOnItemClickListener.In setOnItemClickListener(),我使用 intent 将数据传递给另一个 activity。但另一个 activity 收到空值。 代码是:
- QuerBook.java(发送数据)
public class QueryBook 扩展 Activity {
private List<BookItem> bookList = new ArrayList<BookItem>();
private Bundle saved;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
saved = savedInstanceState;
setContentView(R.layout.querybook);
Log.d("Activity1","haha"+getClass().getSimpleName());
queryBook();
BookAdapter adapter = new BookAdapter(QueryBook.this, R.layout.bookitem, bookList);
ListView listView = (ListView) findViewById(R.id.list_view);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.d("Activity1",getClass().getSimpleName());
// TODO Auto-generated method stub
BookItem bookItem = bookList.get(position);
id = bookItem.getId();
Intent intent = new Intent(QueryBook.this, BookDetail.class);
intent.putExtra("newid",id);
//Log.d("bookid","hah id = "+id);
startActivity(intent);
}
});
}
2.BookDetail.java(接收数据) public class BookDetail 扩展 Activity {
private List<BookItem> bookitemList = new ArrayList<BookItem>();
private int id;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bookdetail);
Log.d("Activity",getClass().getSimpleName());
Intent intent = getIntent();
id = intent.getIntExtra("newid",-1);
Log.d("bookid","book get id is "+id);
}
The 'id' is always return -1;
在onItemClick()
中变量id
被定义为long
。实际上它是签名中的一个参数:
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
所以当你打电话给
intent.putExtra("newid",id);
您实际上是将 long
项放入 "extras" 捆绑包中,而不是 int
。
这就是为什么当您调用 getIntExtra()
时得到 -1,因为类型不匹配。