package app.hanks.com.conquer.adapter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Toast;
import cn.bmob.im.util.BmobLog;
/**
* 基础的适配器
*
* @ClassName: BaseListAdapter
* @Description: TODO
* @author smile
* @date 2014-6-19 上午11:04:01
* @param <E>
*/
@SuppressLint("UseSparseArrays")
public abstract class BaseListAdapter<E> extends BaseAdapter {
public List<E> list;
public Context mContext;
public LayoutInflater mInflater;
public List<E> getList() {
return list;
}
public void setList(List<E> list) {
this.list = list;
notifyDataSetChanged();
}
public void add(E e) {
this.list.add(e);
notifyDataSetChanged();
}
public void addAll(List<E> list) {
this.list.addAll(list);
notifyDataSetChanged();
}
public void remove(int position) {
this.list.remove(position);
notifyDataSetChanged();
}
public BaseListAdapter(Context context, List<E> list) {
super();
this.mContext = context;
this.list = list;
mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
public View getView(int position, View convertView, ViewGroup parent) {
convertView = bindView(position, convertView, parent);
// 绑定内部点击监听
addInternalClickListener(convertView, position, list.get(position));
return convertView;
}
public abstract View bindView(int position, View convertView, ViewGroup parent);
// adapter中的内部点击事件
public Map<Integer, onInternalClickListener> canClickItem;
private void addInternalClickListener(final View itemV, final Integer position, final Object valuesMap) {
if (canClickItem != null) {
for (Integer key : canClickItem.keySet()) {
View inView = itemV.findViewById(key);
final onInternalClickListener inviewListener = canClickItem.get(key);
if (inView != null && inviewListener != null) {
inView.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
inviewListener.OnClickListener(itemV, v, position, valuesMap);
}
});
}
}
}
}
public void setOnInViewClickListener(Integer key, onInternalClickListener onClickListener) {
if (canClickItem == null)
canClickItem = new HashMap<Integer, onInternalClickListener>();
canClickItem.put(key, onClickListener);
}
public interface onInternalClickListener {
public void OnClickListener(View parentV, View v, Integer position, Object values);
}
Toast mToast;
public void ShowToast(final String text) {
if (!TextUtils.isEmpty(text)) {
((Activity) mContext).runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
if (mToast == null) {
mToast = Toast.makeText(mContext, text, Toast.LENGTH_SHORT);
} else {
mToast.setText(text);
}
mToast.show();
}
});
}
}
/**
* 打Log ShowLog
*
* @return void
* @throws
*/
public void ShowLog(String msg) {
BmobLog.i(msg);
}
}