package com.withiter.quhao.view.expandtab; import java.util.List; import android.content.Context; import android.graphics.drawable.Drawable; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; import com.withiter.quhao.R; public class TextAdapter extends ArrayAdapter<String> { private Context mContext; public List<String> mListData; private String[] mArrayData; private int selectedPos = -1; private String selectedText = ""; private int normalDrawbleId; private Drawable selectedDrawble; private float textSize; private OnClickListener onClickListener; private OnItemClickListener mOnItemClickListener; public TextAdapter(Context context, List<String> listData, int sId, int nId) { super(context, R.string.no_data, listData); mContext = context; mListData = listData; selectedDrawble = mContext.getResources().getDrawable(sId); normalDrawbleId = nId; init(); } private void init() { onClickListener = new OnClickListener() { @Override public void onClick(View view) { selectedPos = (Integer) view.getTag(); setSelectedPosition(selectedPos); if (mOnItemClickListener != null) { mOnItemClickListener.onItemClick(view, selectedPos); } } }; } public TextAdapter(Context context, String[] arrayData, int sId, int nId) { super(context, R.string.no_data, arrayData); mContext = context; mArrayData = arrayData; selectedDrawble = mContext.getResources().getDrawable(sId); normalDrawbleId = nId; init(); } /** * 设置选中的position,并通知列表刷新 */ public void setSelectedPosition(int pos) { if (mListData != null && pos < mListData.size()) { selectedPos = pos; selectedText = mListData.get(pos); notifyDataSetChanged(); } else if (mArrayData != null && pos < mArrayData.length) { selectedPos = pos; selectedText = mArrayData[pos]; notifyDataSetChanged(); } } /** * 设置选中的position,但不通知刷新 */ public void setSelectedPositionNoNotify(int pos) { selectedPos = pos; if (mListData != null && pos < mListData.size()) { selectedText = mListData.get(pos); } else if (mArrayData != null && pos < mArrayData.length) { selectedText = mArrayData[pos]; } } /** * 获取选中的position */ public int getSelectedPosition() { if (mArrayData != null && selectedPos < mArrayData.length) { return selectedPos; } if (mListData != null && selectedPos < mListData.size()) { return selectedPos; } return -1; } /** * 设置列表字体大小 */ public void setTextSize(float tSize) { textSize = tSize; } @Override public View getView(int position, View convertView, ViewGroup parent) { TextView view; if (convertView == null) { view = (TextView) LayoutInflater.from(mContext).inflate(R.layout.choose_item, parent, false); } else { view = (TextView) convertView; } view.setTag(position); String mString = ""; if (mListData != null) { if (position < mListData.size()) { mString = mListData.get(position); } } else if (mArrayData != null) { if (position < mArrayData.length) { mString = mArrayData[position]; } } if (mString.contains("不限")) view.setText("不限"); else view.setText(mString); view.setTextSize(TypedValue.COMPLEX_UNIT_SP,textSize); if (selectedText != null && selectedText.equals(mString)) { view.setBackgroundDrawable(selectedDrawble);//设置选中的背景图片 } else { view.setBackgroundDrawable(mContext.getResources().getDrawable(normalDrawbleId));//设置未选中状态背景图片 } view.setPadding(20, 0, 0, 0); view.setOnClickListener(onClickListener); return view; } public void setOnItemClickListener(OnItemClickListener l) { mOnItemClickListener = l; } /** * 重新定义菜单选项单击接口 */ public interface OnItemClickListener { public void onItemClick(View view, int position); } }