package com.aiyou.bbs.adapter;
import java.util.List;
import com.aiyou.R;
import com.aiyou.bbs.bean.Board;
import com.aiyou.bbs.utils.BBSManager;
import com.aiyou.bbs.utils.TreeElement;
import com.aiyou.utils.AiYouManager;
import com.aiyou.utils.SwitchManager;
import com.aiyou.view.DarkImageView;
import external.otherview.Win8ProgressBar;
import external.shimmer.ShimmerTextView;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Color;
import android.os.Build;
import android.text.TextPaint;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
/**
* BBS分区列表的adapter
*
* @author solli_000
*/
public class TreeViewAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private List<TreeElement> mList;
private AiYouManager mIUMgr;
private SwitchManager mSwitchMgr;
private SelectFavoriteListener mListener;
public TreeViewAdapter(Context context, List<TreeElement> list,
SelectFavoriteListener listener) {
mInflater = LayoutInflater.from(context);
mList = list;
mListener = listener;
mIUMgr = AiYouManager.getInstance(context);
mSwitchMgr = SwitchManager.getInstance(context);
}
public int getCount() {
return mList.size();
}
public Object getItem(int position) {
return mList.get(position);
}
public long getItemId(int position) {
return position;
}
@SuppressLint("NewApi")
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.list_item_treeview, null);
holder.iv1 = (ImageView) convertView
.findViewById(R.id.list_item_treeview_iv_1);
holder.iv2 = (ImageView) convertView
.findViewById(R.id.list_item_treeview_iv_2);
holder.iv3 = (ImageView) convertView
.findViewById(R.id.list_item_treeview_iv_3);
holder.iv4 = (ImageView) convertView
.findViewById(R.id.list_item_treeview_iv_4);
holder.iv5 = (ImageView) convertView
.findViewById(R.id.list_item_treeview_iv_5);
holder.shtv = (ShimmerTextView) convertView
.findViewById(R.id.list_item_treeview_shtv);
holder.div = (DarkImageView) convertView.findViewById(R.id.div);
holder.wpb = (Win8ProgressBar)convertView.findViewById(R.id.list_item_treeview_progress_bar);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if (mSwitchMgr.isNightModeEnabled()) {
// 夜间模式
holder.iv1.setImageResource(R.drawable.directory_divider_night);
holder.iv3.setImageResource(R.drawable.directory_divider_night);
holder.iv4.setImageResource(R.drawable.directory_divider_night);
holder.iv5.setImageResource(R.drawable.directory_divider_night);
} else {
// 日间模式
holder.iv1.setImageResource(R.drawable.directory_divider_day);
holder.iv3.setImageResource(R.drawable.directory_divider_day);
holder.iv4.setImageResource(R.drawable.directory_divider_day);
holder.iv5.setImageResource(R.drawable.directory_divider_day);
}
final TreeElement obj = mList.get(position);
holder.shtv.setText(obj.mDesc);
if (obj.mIsSection) {
if (mSwitchMgr.isNightModeEnabled()) {
holder.shtv.setTextColor(Color.parseColor("#00aaaa"));
} else {
holder.shtv.setTextColor(Color.BLUE);
}
TextPaint tp = holder.shtv.getPaint();
tp.setFakeBoldText(true);
} else {
if (mSwitchMgr.isNightModeEnabled()) {
holder.shtv.setTextColor(Color.GRAY);
} else {
holder.shtv.setTextColor(Color.BLACK);
}
TextPaint tp = holder.shtv.getPaint();
tp.setFakeBoldText(false);
}
int margin = mIUMgr.dip2px(20);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
mIUMgr.dip2px(2), mIUMgr.dip2px(50));
params.leftMargin = margin * obj.mLevel;
holder.iv1.setLayoutParams(params);
if (obj.mLevel == 0) {
holder.iv3.setVisibility(View.GONE);
holder.iv4.setVisibility(View.GONE);
holder.iv5.setVisibility(View.GONE);
} else if (obj.mLevel == 1) {
holder.iv3.setVisibility(View.VISIBLE);
holder.iv4.setVisibility(View.GONE);
holder.iv5.setVisibility(View.GONE);
} else if (obj.mLevel == 2) {
holder.iv3.setVisibility(View.VISIBLE);
holder.iv4.setVisibility(View.VISIBLE);
holder.iv5.setVisibility(View.GONE);
} else {
holder.iv3.setVisibility(View.VISIBLE);
holder.iv4.setVisibility(View.VISIBLE);
holder.iv5.setVisibility(View.VISIBLE);
}
if (!obj.mIsSection) {
if (mSwitchMgr.isNightModeEnabled()) {
holder.iv2.setImageResource(R.drawable.divider_white_h_night);
} else {
holder.iv2.setImageResource(R.drawable.divider_white_h_day);
}
if (Build.VERSION.SDK_INT >= 11) {
holder.iv2.setRotation(0);
}
} else {
if (mSwitchMgr.isNightModeEnabled()) {
// 夜间模式
if (Build.VERSION.SDK_INT >= 11) {
holder.iv2.setImageResource(R.drawable.back_night);
} else {
holder.iv2.setImageResource(R.drawable.divider_white_h_night);
}
} else {
// 日间模式
if (Build.VERSION.SDK_INT >= 11) {
holder.iv2.setImageResource(R.drawable.back_day);
} else {
holder.iv2.setImageResource(R.drawable.divider_white_h_day);
}
}
if (Build.VERSION.SDK_INT >= 11) {
if (obj.mIsExpanded) {
holder.iv2.setRotation(-90);
} else {
holder.iv2.setRotation(180);
}
}
}
if(holder.wpb.isStart()) {
holder.wpb.stop();
}
holder.wpb.setVisibility(View.GONE);
if (obj.mIsSection) {
holder.div.setVisibility(View.GONE);
} else {
holder.div.setVisibility(View.VISIBLE);
if (BBSManager.checkFavorite(obj.mName)) {
holder.div.setImageResource(R.drawable.collect);
} else {
holder.div.setImageResource(R.drawable.collect1);
}
Board board = new Board();
board.name = obj.mName;
board.description = obj.mDesc;
holder.div.setTag(board);
final Win8ProgressBar pb = holder.wpb;
holder.div.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Board board = (Board) v.getTag();
mListener.onSelectFavorite(board);
v.setVisibility(View.GONE);
pb.setVisibility(View.VISIBLE);
pb.start();
}
});
}
return convertView;
}
class ViewHolder {
public ImageView iv1;
public ImageView iv2;
public ImageView iv3;
public ImageView iv4;
public ImageView iv5;
public ShimmerTextView shtv;
public DarkImageView div;
public Win8ProgressBar wpb;
}
public interface SelectFavoriteListener {
void onSelectFavorite(Board board);
}
}