[英]ViewHolder ImageView Android
我設計了一個由兩個String和一個ImageView組成的Chord對象。
public class Accordo {
private String nome, note;
private ImageView imagine;
// all the get and set methods
}
當我想在自定義ViewHolder中引用它時,更具體地說,當我@override
onBindViewHolder()
方法時,我寫:
holder.nome.setText(chord.getNome());
holder.note.setText(chord.getNote());
對於TextView,我可以使用setText()
方法。 但是ImageViews
的等效項是什么?
編輯我可以使用setImageResource()
但是它從drawable中獲取一個int值。
由於我需要每行帶有不同圖像的recyclerView,因此我需要稍后可以在另一個類中進行設置的東西,例如:
private void prepareMovieData() {
Movie movie = new Movie("Mad Max: Fury Road", "Action & Adventure", "**LocallyStoredImage**");
movieList.add(movie);
...
}
考慮這種方法:
首先,在顯示RecyclerView項目的類(活動或片段)內部,定義一個可繪制對象的原始數組,如下所示:
private int[] menuIcons = { R.drawable.user, R.drawable.customer, R.drawable.list, R.drawable.leads };
還要在此處創建適配器的實例,以備后用。
private SampleRecyclerAdapter mAdapter;
仍然從您的活動或片段中,初始化您的值
private void initRecyclerViewData(){
List<SampleData> data = new ArrayList<>();
data.add(new DataObject("Title of row 1", menuIcons[0]));
data.add(new DataObject("Title of row 2", menuIcons[1]));
data.add(new DataObject("Title of row 3", menuIcons[2]));
data.add(new DataObject("Title of row 4", menuIcons[3]));
//now initialize your adapter - we will create the adapter next
mAdapter = new SampleRecyclerAdapter(data);
mRecyclerView.setAdapter(mAdapter);
mAdapter.notifyDataSetChanged();
}
現在我們已經初始化了適配器,讓我們看看如何在適配器內部顯示圖像-綁定視圖時;
//inside your Adapter class;
....
private List<DataObject> mMenuItemObjects;
public SampleRecyclerAdapter(List<DataObject> menuItemObjects) {
mMenuItemObjects = menuItemObjects;
}
@Override
public void onBindViewHolder(MainMenuViewHolder holder, int position) {
holder.itemName.setText(mMenuItemObjects.get(position).getName());
holder.itemIcon.setImageResource(mMenuItemObjects.get(position).getIcon());
}
上面的代碼意味着您具有DataObject類型的ArrayList
。 記住,當我們在活動中實例化適配器時,我們傳遞了一組數據,每個數據都有一個標題和一個圖標(可繪制)。
這是在onBindViewHolder方法內的recyclerviewer上設置圖像的最簡單方法。
注意:您必須創建一個ViewHolder類和DataObject(后者是一個普通的舊Java對象)。
祝您好運,希望對您有所幫助!
等效的圖像將是setImageResource()。
holder.imagine.setImageResource(chord.getImage());
list.add(...)
之后調用adapter.notifydatasetchanged()
. list.add(...)
onBindViewHolder()
使用類似Picasso
的圖像來加載圖像(猜測圖像來自URI形式的某種數據庫)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.