CommonAdapter.java
2.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package com.cnlive.gundam.video.adpter;
import android.content.Context;
import android.databinding.DataBindingUtil;
import android.databinding.ViewDataBinding;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import com.cnlive.gundam.databinding.ItemListRightBinding;
import com.cnlive.gundam.video.model.MessageContent;
import java.util.ArrayList;
import java.util.List;
/**
* @author 陈硕
* @time 2017/5/25 19:23
* @desc ${TODD}
*/
public class CommonAdapter<T> extends BaseAdapter {
private Context mContext;
private List<T> mDataList;
private int layoutId; // 条目布局ID
private int variableId; // DataBinding的变量ID,可通过类似R文件的BR文件来获取
public CommonAdapter(Context context, int layoutId, int variableId) {
this.mContext = context;
this.layoutId = layoutId;
this.variableId = variableId;
this.mDataList= new ArrayList<>();
}
public void addItems(List<T> items){
if(items == null) return ;
this.mDataList=items;
notifyDataSetChanged();
}
@Override
public int getCount() { return mDataList.size(); }
@Override
public Object getItem(int position) { return mDataList.get(position); }
@Override
public long getItemId(int position) { return position; }
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// 没有ViewHolder的复用,但Databinding内部已经实现了复用
ViewDataBinding binding;
if (convertView == null) {
binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), layoutId, parent, false);
} else {
binding = DataBindingUtil.getBinding(convertView);
}
binding.setVariable(variableId, mDataList.get(position));
MessageContent user = (MessageContent) mDataList.get(position);
if(((MessageContent) mDataList.get(position)).isSendInfo()){
ItemListRightBinding binding1 = (ItemListRightBinding) binding;
LinearLayout rightLin = binding1.rightLin;
LinearLayout leftLin = binding1.leftLin;
leftLin.setVisibility(View.VISIBLE);
rightLin.setVisibility(View.INVISIBLE);
}else {
ItemListRightBinding binding1 = (ItemListRightBinding) binding;
LinearLayout leftLin = binding1.leftLin;
LinearLayout rightLin = binding1.rightLin;
rightLin.setVisibility(View.VISIBLE);
leftLin.setVisibility(View.INVISIBLE);
}
return binding.getRoot();
}
}