2013-11-23 103 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