Android创建自定义适配器

时间:2013-11-23 12:50:26

标签: android listview

我有一本关于类型书的对象的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。 请帮助。

2 个答案:

答案 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的信息,包括提高性能。