listadapter-Android CustomListAdapter有问题

问题描述

Android CustomListAdapter有问题

在customlistadapter中创建了一行带有文本视图和复选框。列表显示没问题,只是在选择其中一项时其他项目也被自动选上了,滚动列表的话选择的选项又被取消了。

列表适配器的代码:

import java.util.ArrayList;

import com.example.interactiveapp.R;
import com.interactiveapp.Constants;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.TextView;

public class FBContactlistAdapter extends BaseAdapter implements Filterable {
    private LayoutInflater mInflater;
    private ArrayList<Object> itemList;
    private Activity _activity;
    String contactName="";
    String photoPath="";
    String emailId="";
    public FBContactlistAdapter(Activity activity, ArrayList<Object> itemList) {
        this._activity = activity;
        this.itemList = itemList;
        mInflater = (LayoutInflater) activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    public int getCount() {
        return itemList != null ? itemList.size(): 0;
    }
    public Object getItem(int position) {
        return itemList.get(position);
    }
    public Filter getFilter() {
        return null;
    }
    public long getItemId(int position) {
        return 0;
    }
    static class ViewHolder {
        CheckBox checkBox;
        TextView emailTxt;
    }
    public View getView(final int position, View convertView, ViewGroup parent) {
        final ContactBean contactBean=(ContactBean)getItem(position);
        final ViewHolder holder;
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.fb_contact_list_row, null);
            holder = new ViewHolder();
            holder.checkBox = (CheckBox)convertView.findViewById(R.id.checkBox1);
            holder.emailTxt = (TextView)convertView.findViewById(R.id.username_txt);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.emailTxt.setOnClickListener(new OnClickListener() {
            public void onClick(View arg0) {
                emailId=contactBean.getEmailId();
                if(contactBean.isSelected==false){
                    contactBean.setSelected(true);
                    holder.checkBox.setChecked(true);
                    Constants.fbContactListArrayList.set(position, contactBean);
                }else{
                    contactBean.setSelected(false);
                    holder.checkBox.setChecked(false);
                    Constants.fbContactListArrayList.set(position, contactBean);
                }
            }
        });
        //SET VALUES ON LIST VIEW
        emailId=contactBean.getEmailId();
        if(emailId.length()!=0 ||emailId!=null){
            holder.emailTxt.setText(emailId);
        }
        return convertView;
    }
    //HANDLER
    private Handler _handler = new Handler() {
        public void dispatchMessage(Message msg) {
            switch (msg.arg1) {
            case 123:
                break;
            default:
                break;
            }
        }
    };
    public void serverResponse(String response, int processid) {
        Message msg = new Message();
        msg.arg1 = processid;
        msg.obj = response;
        _handler.dispatchMessage(msg);
    }
    /*//SEND EMAIL TO INVITE FRIEND
    public void sendEmail(String emailId){
        Intent intent = new Intent(Intent.ACTION_SEND);
        //intent.setType("text/plain");
        intent.setType("message/rfc822");
        intent.putExtra(Intent.EXTRA_EMAIL, emailId);
        intent.putExtra(Intent.EXTRA_SUBJECT,Constant.EMAIL_SUBJECT);
        intent.putExtra(Intent.EXTRA_TEXT, Constant.EMAIL_CONTENT);
        _activity.startActivity(Intent.createChooser(intent, "Send Email"));
    }*/
}
时间: 2024-12-02 18:57:52

listadapter-Android CustomListAdapter有问题的相关文章

listview-改变列表视图ListView中的字体和背景

问题描述 改变列表视图ListView中的字体和背景 我想改变列表视图ListView中的字体(颜色和大小)和背景.我想用代码改变而不是想通过设置xml的属性实现.以下的list view看起来就像xml: <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" andr

android上拉下拉加载更多数据

最近项目中用到了ListView的下拉刷新的功能,总结了一下前辈们的代码,单独抽取出来写了一个demo作为示例. 效果图 下拉刷新: 加载更多: CustomListView.java [java] view plaincopy package com.example.uitest.view;      import java.util.Date;   import com.example.uitest.R;   import android.content.Context;   import 

Android中实现水平滑动(横向滑动)ListView示例

  这篇文章主要介绍了Android中实现水平滑动(横向滑动)ListView示例,本文用自己封装一个控件的方法解决了这个需求,需要的朋友可以参考下 水平的ListView-HorizontalListView的使用 Android中ListView默认的是竖直方向的滑动,由于项目的需求,需要ListView是水平滑动的.有很多的方式可以实现,但是比较好的一种方式就是自己封装一个控件,使用方式和ListView的使用方式是一样的.需要完善的地方:获取到的图片大小没有处理.在界面上展示的是图片的原

android动态布局之动态加入TextView和ListView的方法

  本文实例讲述了android动态布局之动态加入TextView和ListView的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 6

android获取正在运行的应用程序

在framework中想添加这个功能,所以写了个appliction来实现一下获取正在运行的应用程序: 还是先看图吧:   这个app主要是简单的实现了获取非系统的应用程序和一些常用的系统应用程序,显示在一个listview中,并添加了点击(回复到你打开的界面)和长按事件(关闭应用程序).   看看代码吧:   直接贴出来再加上注释吧(直接写在一个文件里): package andorid.tasks; import java.io.File; import java.util.ArrayLis

android 从资源中获取数组

   8.1.1.概述 除了在Java代码中定义数组,Android还提供了在资源中定义数组,然后在Java代码中解析资源,从而获取数组的方法. 实际开发中,推荐将数据存放在资源文件中,以实现程序的逻辑代码与数据分离,便于项目的管理,尽量减少对Java代码的修改. 8.1.2.在资源中定义数组 步骤1.在res/values文件夹下创建arrays.xml文件: 步骤2.在arrays.xml文件中创建一个数组,如下代码所示: <?xml version="1.0" encodi

Android是如何实现应用程序之间数据共享的?

一个应用程序可以将自己的数据完全暴露出去,外界更本看不到,也不用看到这个应用程序暴露的数据是如何存储的,或者是使用数据库还是使用文件,还是通过网上获得,这些一切都不重要,重要的是外界可以通过这一套标准及统一的接口和这个程序里的数据打交道,例如:添加(insert).删除(delete).查询(query).修改(update),当然需要一定的权限才可以. 如何将应用程序的数据暴露出去? Android提供了ContentProvider,一个程序可以通过实现一个Content provider的

Android API 中文 (42) —— ListView

前言 关键字:Android API 中文 , Android 中文 API , android.widget.ListView 本章内容是 android.widget.ListView,译为"列表视图",版本为Android 2.2 r1,翻译来自"Tina",这是翻译组至今独立完成翻译最长的一篇 ,再次感谢"Tina"为大家带来优质的翻译稿 !期待你一起参与Android API 的中文翻译,联系我over140@gmail.com.  

Android多线程任务优化1:探讨AsyncTask的缺陷

 AsyncTask还有别的缺陷,在生成listview的时候,如果adapter里面的count动态改变的话,不能使用AsyncTask,只能使用Thread+Handler,否则会出现如下错误 java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adap