package com.fanxin.easeui.widget; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.ListView; import android.widget.RelativeLayout; import com.hyphenate.easeui.R; import com.fanxin.easeui.adapter.EaseContactAdapter; import com.fanxin.easeui.domain.EaseUser; public class EaseContactList extends RelativeLayout { protected static final String TAG = EaseContactList.class.getSimpleName(); protected Context context; protected ListView listView; protected EaseContactAdapter adapter; protected List<EaseUser> contactList; protected EaseSidebar sidebar; protected int primaryColor; protected int primarySize; protected boolean showSiderBar; protected Drawable initialLetterBg; static final int MSG_UPDATE_LIST = 0; Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case MSG_UPDATE_LIST: if(adapter != null){ adapter.clear(); adapter.addAll(new ArrayList<EaseUser>(contactList)); adapter.notifyDataSetChanged(); } break; default: break; } super.handleMessage(msg); } }; protected int initialLetterColor; public EaseContactList(Context context) { super(context); init(context, null); } public EaseContactList(Context context, AttributeSet attrs) { super(context, attrs); init(context, attrs); } public EaseContactList(Context context, AttributeSet attrs, int defStyle) { this(context, attrs); } private void init(Context context, AttributeSet attrs) { this.context = context; TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.EaseContactList); primaryColor = ta.getColor(R.styleable.EaseContactList_ctsListPrimaryTextColor, 0); primarySize = ta.getDimensionPixelSize(R.styleable.EaseContactList_ctsListPrimaryTextSize, 0); showSiderBar = ta.getBoolean(R.styleable.EaseContactList_ctsListShowSiderBar, true); initialLetterBg = ta.getDrawable(R.styleable.EaseContactList_ctsListInitialLetterBg); initialLetterColor = ta.getColor(R.styleable.EaseContactList_ctsListInitialLetterColor, 0); ta.recycle(); LayoutInflater.from(context).inflate(R.layout.ease_widget_contact_list, this); listView = (ListView)findViewById(R.id.list); sidebar = (EaseSidebar) findViewById(R.id.sidebar); if(!showSiderBar) sidebar.setVisibility(View.GONE); } /* * init view */ public void init(List<EaseUser> contactList){ this.contactList = contactList; adapter = new EaseContactAdapter(context, 0, new ArrayList<EaseUser>(contactList)); adapter.setPrimaryColor(primaryColor).setPrimarySize(primarySize).setInitialLetterBg(initialLetterBg) .setInitialLetterColor(initialLetterColor); listView.setAdapter(adapter); if(showSiderBar){ sidebar.setListView(listView); } } public void refresh(){ Message msg = handler.obtainMessage(MSG_UPDATE_LIST); handler.sendMessage(msg); } public void filter(CharSequence str) { adapter.getFilter().filter(str); } public ListView getListView(){ return listView; } public void setShowSiderBar(boolean showSiderBar){ if(showSiderBar){ sidebar.setVisibility(View.VISIBLE); }else{ sidebar.setVisibility(View.GONE); } } }