2013-11-23 78 views
0

我有一个类型为book的对象的数组列表。 这是我的对象Android创建自定义适配器

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列表视图, 查看标题和我如何能得到id为项目的onClick动作中都超过了。 需要帮助。

+0

这是我的自定义适配器公共类CustomAdapter扩展ArrayAdapter { \t公共CustomAdapter(上下文的背景下,INT textViewResourceId, \t \t \t ArrayList的时listItems){ \t \t超(背景下,textViewResourceId,listItems中); \t} \t @Override \t公共视图getView(INT位置,查看convertView,父的ViewGroup){ \t \t视图视图= super.getView(位置,convertView,母体); \t \t TextView tv =(TextView)view.findViewById(android.R.id.text1); \t \t tv.setTextColor(Color.GREEN); tv.setTextSize(20); \t \t return view; \t} } – ayman

+1

请将您的代码粘贴到问题中,而不是发表评论。想想自己,如果你有一些错误,你能从上面的评论中发现吗? –

回答

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; 
} 
+0

谢谢你,但我如何创建自定义适配器只能在列表视图中查看书名。 – ayman

+0

非常感谢您的帮助; – ayman

0

.The默认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包括改善了很多信息。

+0

感谢您的帮助。 – ayman