CommonAdapter.java 2.69 KB
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 android.widget.RelativeLayout;

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;
            RelativeLayout leftLin = binding1.leftLin;
            leftLin.setVisibility(View.VISIBLE);
            rightLin.setVisibility(View.INVISIBLE);
        }else {
            ItemListRightBinding binding1 = (ItemListRightBinding) binding;
            RelativeLayout leftLin = binding1.leftLin;
            LinearLayout rightLin = binding1.rightLin;
            rightLin.setVisibility(View.VISIBLE);

            leftLin.setVisibility(View.INVISIBLE);
        }


        return binding.getRoot();
    }
}