package edu.minggo.chat.adapters; import java.util.HashMap; import java.util.List; import java.util.Map; import edu.minggo.chat.R; import edu.minggo.chat.model.User; import edu.minggo.chat.util.PagingFriendList; import android.content.Context; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; /** * MainTab�е���ҳ�����ǡ���Ϣ��ʷ��¼ * @author minggo * @created 2013-1-30����11:53:51 */ public class MainLansiAdapter extends BaseAdapter { public static List<User> friendlist; public static boolean searchFlag = false; private boolean addflag = false; private View addressList; private Bitmap userIcon ; public Context context; private Map<Integer,View> map = new HashMap<Integer,View>(); public MainLansiAdapter(Context contextParam,List<User> friendslist,View addressList){ friendlist = friendslist; context = contextParam; this.addressList = addressList; initHeigh(); } public void initHeigh(){ View view =LayoutInflater.from(context).inflate(R.layout.main_tab_lansi_listitem, null); int layout_hiegh = view.findViewById(R.id.forHeigh0).getLayoutParams().height; addressList.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, (friendlist.size()+1)*(layout_hiegh+2))); } @Override public int getCount(){ if(searchFlag==true) return friendlist.size(); return friendlist.size()+1; } @Override public long getItemId(int index) { if(index<this.getCount()-1){ return friendlist.get(index).getUserid();//����û�ѡ���м��� }else{ return -1; } } //���Ӹ������� public void addMoreData(List<User> moreFriends){ friendlist.addAll(moreFriends); this.notifyDataSetChanged(); initHeigh(); addflag = true; } //ɾ������ public void deleItem(int positon){ friendlist.remove(positon); this.notifyDataSetChanged(); } @Override public Object getItem(int position) { return friendlist.get(position); } public static class ViewHolder{ ImageView ivItemPortrait; //ͷ�� ��Ĭ��ֵ TextView tvItemName;//�dz� TextView tvItemLastMsg;//�������Ϣ��¼ TextView tvTail;//ĩβ��ѯ��ʾ TextView tvItemLasttime;//�����Ϣ��ʱ�� } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = map.get(position); ViewHolder viewHolder; if(searchFlag==false){ if (convertView==null||addflag==true) { viewHolder = new ViewHolder(); if(position==this.getCount()-1){ convertView = LayoutInflater.from(context).inflate(R.layout.list_moreitems, null); viewHolder.tvTail = (TextView)convertView.findViewById(R.id.textView); }else{ convertView = LayoutInflater.from(context).inflate(R.layout.main_tab_lansi_listitem, null); viewHolder.ivItemPortrait = (ImageView)convertView.findViewById(R.id.head); viewHolder.tvItemName = (TextView)convertView.findViewById(R.id.username); viewHolder.tvItemLastMsg = (TextView)convertView.findViewById(R.id.last_message); viewHolder.tvItemLastMsg = (TextView)convertView.findViewById(R.id.message_lasttime); Drawable d = context.getResources().getDrawable(R.drawable.xiaohei); BitmapDrawable bd = (BitmapDrawable) d; userIcon = bd.getBitmap(); } map.put(position, convertView); convertView.setTag(viewHolder); }else{ viewHolder = (ViewHolder)convertView.getTag(); } if(position<this.getCount()-1){ viewHolder.tvItemName.setText(friendlist.get(position).getUsername()); viewHolder.ivItemPortrait.setImageBitmap(userIcon); }else if(position==this.getCount()-1){ if(PagingFriendList.allFriend.size()==position||PagingFriendList.allFriend.size()<7) viewHolder.tvTail.setVisibility(View.GONE); else viewHolder.tvTail.setText("����"); } return convertView; }else{ View view = null ; if(!friendlist.isEmpty()){ view = LayoutInflater.from(context).inflate(R.layout.main_tab_address_listitem, null); Drawable d = context.getResources().getDrawable(R.drawable.xiaohei); BitmapDrawable bd = (BitmapDrawable) d; userIcon = bd.getBitmap(); ((TextView)view.findViewById(R.id.username)).setText(friendlist.get(position).getUsername()); ((ImageView) view.findViewById(R.id.head)).setImageBitmap(userIcon); } return view; } } }