簡體   English   中英

ViewHolder ImageView Android

[英]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());
  1. 開設一個可以容納您的標題和圖像的課程
  2. 創建該特定類的ArrayList。
  3. 將數據添加到陣列列表
  4. 在您的list.add(...)之后調用adapter.notifydatasetchanged() . list.add(...)
  5. onBindViewHolder()使用類似Picasso的圖像來加載圖像(猜測圖像來自URI形式的某種數據庫)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM