80,351
社区成员
发帖
与我相关
我的任务
分享
public class ContactFriendAdapter extends BaseAdapter{
private static final String TAG = ContactFriendAdapter.class.getSimpleName();
private List<ContactFreindInfo> dataList;
private Context context;
private LayoutInflater inflater;
private ViewHolder viewholder;
private List<String> listInvited;
private MyClickListener myClickListener = null;
public ContactFriendAdapter(Context context, List<ContactFreindInfo> dataList){
this.dataList = dataList;
this.context = context;
this.inflater = LayoutInflater.from(context);
}
public List<ContactFreindInfo> getDataList() {
return dataList;
}
public void setDataList(List<ContactFreindInfo> dataList) {
this.dataList = dataList;
}
@Override
public int getCount() {
return dataList.size();
}
@Override
public Object getItem(int position) {
return dataList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if(convertView==null){
viewholder = new ViewHolder();
convertView = inflater.inflate(R.layout.layout_select_contact_friends, null);
myClickListener = new MyClickListener(position);
viewholder.ivHeader = (ImageView) convertView.findViewById(R.id.iv_head);
viewholder.tvName = (TextView) convertView.findViewById(R.id.tv_name);
viewholder.tvPhone = (TextView) convertView.findViewById(R.id.tv_phone);
viewholder.tvIsInvited = (TextView) convertView.findViewById(R.id.tv_is_invited);
convertView.setTag(viewholder);
}else{
viewholder = (ViewHolder) convertView.getTag();
}
notifyDataSetChanged(); //刷新数据
if(dataList.get(position).getContacNameList().size()>1){
for(int i=0; i<dataList.get(position).getContacNameList().size(); i++){
viewholder.tvName.setText(dataList.get(position).getContacNameList().get(i));
viewholder.tvPhone.setText(dataList.get(position).getPhoneNumList().get(i)); //FIXME
}
}else if(dataList.get(position).getContacNameList().size() == 1){
viewholder.tvName.setText(dataList.get(position).getContacNameList().get(0));
viewholder.tvPhone.setText(dataList.get(position).getPhoneNumList().get(0));
}
viewholder.tvIsInvited.setOnClickListener(myClickListener);
return convertView;
}
/**
* 获取已邀请的联系人的电话列表
* @return
*/
public List<String> getInvitedList(){
return listInvited;
}
public class ViewHolder{
ImageView ivHeader;
TextView tvName;
TextView tvPhone;
TextView tvIsInvited;
}
private class MyClickListener implements OnClickListener{
private int position;
public MyClickListener(int position){
this.position = position;
}
@Override
public void onClick(View v) {
// FIXME
viewholder.tvIsInvited.setText("已发送邀请");
listInvited = new ArrayList<String>();
if(dataList.get(position).getContacNameList().size()>1){
for(int i=0; i<dataList.get(position).getContacNameList().size(); i++){
listInvited.add(dataList.get(position).getPhoneNumList().get(i));
}
}else if(dataList.get(position).getContacNameList().size() == 1){
listInvited.add(dataList.get(position).getPhoneNumList().get(0));
}
Log.d(TAG, "你点击了第"+position+"个人");
}
}
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder viewholder = null;
if(convertView==null){
viewholder = new ViewHolder();
convertView = inflater.inflate(R.layout.layout_select_contact_friends, null);
myClickListener = new MyClickListener(position);
viewholder.ivHeader = (ImageView) convertView.findViewById(R.id.iv_head);
viewholder.tvName = (TextView) convertView.findViewById(R.id.tv_name);
viewholder.tvPhone = (TextView) convertView.findViewById(R.id.tv_phone);
viewholder.tvIsInvited = (TextView) convertView.findViewById(R.id.tv_is_invited);
convertView.setTag(viewholder);
}else{
viewholder = (ViewHolder) convertView.getTag();
}
viewholder.tvName.setText(dataList.get(position).getContacNameList().get(i));
viewholder.tvPhone.setText(dataList.get(position).getPhoneNumList().get(i)); //FIXME
viewholder.tvIsInvited.setOnClickListener(new OnClickListener{
@Override
public void onClick(View v) {
viewholder.tvIsInvited.setText("改变");
}
});
return convertView;
}
public class ContactFriendAdapter extends BaseAdapter{
private static final String TAG = ContactFriendAdapter.class.getSimpleName();
private List<ContactFreindInfo> dataList;
private Context context;
private LayoutInflater inflater;
private MyClickListener myClickListener;
public ContactFriendAdapter(Context context, List<ContactFreindInfo> dataList){
this.dataList = dataList;
this.context = context;
this.inflater = LayoutInflater.from(context);
}
public List<ContactFreindInfo> getDataList() {
return dataList;
}
public void setDataList(List<ContactFreindInfo> dataList) {
this.dataList = dataList;
}
@Override
public int getCount() {
return dataList.size();
}
@Override
public Object getItem(int position) {
return dataList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewholder = null;
if(convertView==null){
viewholder = new ViewHolder();
convertView = inflater.inflate(R.layout.layout_select_contact_friends, null);
myClickListener = new MyClickListener(position);
viewholder.ivHeader = (ImageView) convertView.findViewById(R.id.iv_head);
viewholder.tvName = (TextView) convertView.findViewById(R.id.tv_name);
viewholder.tvPhone = (TextView) convertView.findViewById(R.id.tv_phone);
viewholder.tvIsInvited = (TextView) convertView.findViewById(R.id.tv_is_invited);
convertView.setTag(viewholder);
}else{
viewholder = (ViewHolder) convertView.getTag();
}
viewholder.tvName.setText(dataList.get(position).getContacNameList().get(i));
viewholder.tvPhone.setText(dataList.get(position).getPhoneNumList().get(i)); //FIXME
viewholder.tvIsInvited.setOnClickListener(myClickListener);
return convertView;
}
public class ViewHolder{
ImageView ivHeader;
TextView tvName;
TextView tvPhone;
TextView tvIsInvited;
}
private class MyClickListener implements OnClickListener{
private int position;
public MyClickListener(int position){
this.position = position;
}
@Override
public void onClick(View v) {
// FIXME
viewholder.tvIsInvited.setText("已发送邀请"); // 点击哪里一行的item上的textview也改变值了,但是,如果滑动,新出来的i对应被复用的item上textview也改变了值, 这里有问题啊!像大家说的,viewholder的缓存机制错乱的问题,但是我不理解缓存机制,因此不懂得如何去修复这个问题。大神,再次拜托了。
Log.d(TAG, "你点击了第"+position+"个人"); // 这里永远都是没有错误的。点击了哪个position的item,就toast哪一行
}
}
}