package com.fanxin.app.fx; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.EditText; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.widget.AdapterView.OnItemClickListener; import com.fanxin.app.Constant; import com.fanxin.app.MYApplication; import com.fanxin.app.R; import com.fanxin.app.activity.BaseActivity; import com.fanxin.app.domain.User; import com.fanxin.app.fx.others.LoadUserAvatar; import com.fanxin.app.fx.others.LoadUserAvatar.ImageDownloadedCallBack; public class PayActivity extends BaseActivity { private ListView listView; private PickContactAdapter contactAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_pay); initView(); } @SuppressLint("InflateParams") private void initView() { // 获取好友列表 final List<User> alluserList = new ArrayList<User>(); for (User user : MYApplication.getInstance().getContactList() .values()) { if (!user.getUsername().equals(Constant.NEW_FRIENDS_USERNAME) & !user.getUsername().equals(Constant.GROUP_USERNAME)) alluserList.add(user); } // 对list进行排序 Collections.sort(alluserList, new PinyinComparator() { }); listView = (ListView) findViewById(R.id.list); // LayoutInflater layoutInflater = LayoutInflater.from(this); // View headerView = layoutInflater.inflate(R.layout.item_chatroom_header, // null); // TextView tv_header = (TextView) headerView.findViewById(R.id.tv_header); // tv_header.setOnClickListener(new OnClickListener() { // // @Override // public void onClick(View v) { // // startActivity(new Intent(PayActivity.this, // // ChatRoomActivity.class)); // // finish(); // } // // }); final EditText et_search = (EditText) this.findViewById(R.id.et_search); et_search.addTextChangedListener(new TextWatcher() { public void onTextChanged(CharSequence s, int start, int before, int count) { if (s.length() > 0) { String str_s = et_search.getText().toString().trim(); List<User> users_temp = new ArrayList<User>(); for (User user : alluserList) { String usernick = user.getNick(); Log.e("usernick--->>>", usernick); Log.e("str_s--->>>", str_s); if (usernick.contains(str_s)) { users_temp.add(user); } contactAdapter = new PickContactAdapter( PayActivity.this, R.layout.item_contact_list, users_temp); listView.setAdapter(contactAdapter); } } else { contactAdapter = new PickContactAdapter( PayActivity.this, R.layout.item_contact_list, alluserList); listView.setAdapter(contactAdapter); } } public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void afterTextChanged(Editable s) { } }); // listView.addHeaderView(headerView); contactAdapter = new PickContactAdapter(this, R.layout.item_contact_list, alluserList); listView.setAdapter(contactAdapter); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // Bitmap bitmap=contactAdapter.getBitmap(position); User user=alluserList.get(position); Intent intent=new Intent(PayActivity.this,PayDetailActivity.class); intent.putExtra("hxid", user.getUsername()); intent.putExtra("avatar", user.getAvatar()); intent.putExtra("nick", user.getNick()); startActivity(intent); finish(); // CheckBox checkBox = (CheckBox) view.findViewById(R.id.checkbox); // checkBox.toggle(); } }); } /** * adapter */ private class PickContactAdapter extends BaseAdapter { private LayoutInflater layoutInflater; // private boolean[] isCheckedArray; private LoadUserAvatar avatarLoader; private List<User> list = new ArrayList<User>(); private int res; @SuppressLint("SdCardPath") public PickContactAdapter(Context context, int resource, List<User> users) { layoutInflater = LayoutInflater.from(context); avatarLoader = new LoadUserAvatar(context, "/sdcard/fanxin/"); this.res = resource; this.list = users; } @SuppressLint("ViewHolder") @Override public View getView(final int position, View convertView, ViewGroup parent) { convertView = layoutInflater.inflate(res, null); ImageView iv_avatar = (ImageView) convertView .findViewById(R.id.iv_avatar); TextView tv_name = (TextView) convertView .findViewById(R.id.tv_name); TextView tvHeader = (TextView) convertView .findViewById(R.id.header); final User user = list.get(position); final String avater = user.getAvatar(); String name = user.getNick(); String header = user.getHeader(); final String username = user.getUsername(); tv_name.setText(name); iv_avatar.setImageResource(R.drawable.default_useravatar); iv_avatar.setTag(avater); Bitmap bitmap = null; if (avater != null && !avater.equals("")) { bitmap = avatarLoader.loadImage(iv_avatar, avater, new ImageDownloadedCallBack() { @Override public void onImageDownloaded(ImageView imageView, Bitmap bitmap) { if (imageView.getTag() == avater) { imageView.setImageBitmap(bitmap); } } }); if (bitmap != null) { iv_avatar.setImageBitmap(bitmap); } } if (position == 0 || header != null && !header.equals(getItem(position - 1))) { if ("".equals(header)) { tvHeader.setVisibility(View.GONE); } else { tvHeader.setVisibility(View.VISIBLE); tvHeader.setText(header); } } else { tvHeader.setVisibility(View.GONE); } return convertView; } @Override public int getCount() { // TODO Auto-generated method stub return list.size(); } @Override public String getItem(int position) { if (position < 0) { return ""; } String header = list.get(position).getHeader(); return header; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } } @SuppressLint("DefaultLocale") public class PinyinComparator implements Comparator<User> { @SuppressLint("DefaultLocale") @Override public int compare(User o1, User o2) { // TODO Auto-generated method stub String py1 = o1.getHeader(); String py2 = o2.getHeader(); // 判断是否为空"" if (isEmpty(py1) && isEmpty(py2)) return 0; if (isEmpty(py1)) return -1; if (isEmpty(py2)) return 1; String str1 = ""; String str2 = ""; try { str1 = ((o1.getHeader()).toUpperCase()).substring(0, 1); str2 = ((o2.getHeader()).toUpperCase()).substring(0, 1); } catch (Exception e) { System.out.println("某个str为\" \" 空"); } return str1.compareTo(str2); } private boolean isEmpty(String str) { return "".equals(str.trim()); } } }