2017年8月10日木曜日

Kotlin メモ : ArrayAdapter

Java
  1. class MyAdapter extends ArrayAdapter<MyData> {  
  2.   
  3.     private final LayoutInflater inflater;  
  4.   
  5.     MyAdapter(Context context, List<MyData> objects) {  
  6.         super(context, 0, objects);  
  7.         inflater = LayoutInflater.from(context);  
  8.     }  
  9.   
  10.     ...  
  11.   
  12.     @NonNull  
  13.     @Override  
  14.     public View getView(int position, View convertView, @NonNull ViewGroup parent) {  
  15.         final MyViewHolder holder;  
  16.         if (convertView == null) {  
  17.             holder = MyViewHolder.create(inflater, parent);  
  18.             convertView = holder.view;  
  19.             convertView.setTag(holder);  
  20.         } else {  
  21.             holder = (MyViewHolder) convertView.getTag();  
  22.         }  
  23.   
  24.         final MyData data = getItem(position);  
  25.         assert data != null;  
  26.   
  27.         holder.bind(data);  
  28.   
  29.         return convertView;  
  30.     }  
  31. }  
Kotlin
  1. class MyAdapter(context: Context, objects: List<MyData>) : ArrayAdapter<MyData>(context, 0, objects) {  
  2.   
  3.     private val inflater = LayoutInflater.from(context)  
  4.   
  5.     ...  
  6.   
  7.     override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {  
  8.         val view: View = convertView ?: MyViewHolder.create(inflater, parent)  
  9.                 .also { it.view.tag = it }  
  10.                 .view  
  11.         getItem(position)?.let {  
  12.             (view.tag as MyViewHolder).bind(it)  
  13.         }  
  14.         return view  
  15.     }  
  16. }  

0 件のコメント:

コメントを投稿