我有一本关于类型书的对象的arraylist。 这是我的对象
public class Book
{
private String title;
private int id;
public String getTitle() {
return title;
}
public void setTitle(String title)
{
this.title=title;
}
public int getid()
{
return id;
}
public void setid(int id)
{
this.id = id;
}
}
我想只在android listview中查看标题, 如何在项目onClick动作期间获取每个标题的id。 请帮助。
答案 0 :(得分:0)
你可以这样做:
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, final View view,
int position, long id) {
Book item = (Book) parent.getItemAtPosition(position);
int selected_id = item.getId();
Log.i("selected id:--->", selected_id+"");
}
});
请粘贴您的完整活动代码(如果您在尝试时收到任何错误),以便我们可以轻松帮助您。
修改强>
检查下面给出的第二个答案,仅显示标题。只需在Book
类中编写此方法:
public String toString() {
return title;
}
答案 1 :(得分:0)
。默认的ArrayAdapter对象在每个对象上调用toString()方法,所以你可以写:
public String toString() {
return title;
}
如果你想创建自己的ArrayAdapter,你可以这样写:
public class BookAdapter extends ArrayAdapter<Book> {
private static final int LAYOUT = R.layout.your_book_layout;
private Book[] books;
public BookAdapter(Context context, Book[] books) {
super(context, layout, books);
this.books = books;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = ((LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(LAYOUT, parent, false);
((TextView) row.findViewById(R.id.tvTitle)).setText(books[position].getTitle());
return row;
}
}
This page有很多关于ArrayAdapters的信息,包括提高性能。