Java Android ListView项目在滚动时消失

Java Android ListView项目在滚动时消失,java,android,listview,Java,Android,Listview,我已使用适配器将一些图片加载到ListView中。当用户单击列表中的任何一行时,我会在末尾显示一个复选标记: public class LazyImageLoadAdapter extends BaseAdapter implements OnClickListener{ private Activity activity; List<String> names,facebookbid; String sent; private LayoutIn

我已使用适配器将一些图片加载到ListView中。当用户单击列表中的任何一行时,我会在末尾显示一个复选标记:

public class LazyImageLoadAdapter extends BaseAdapter implements OnClickListener{

    private Activity activity;
    List<String> names,facebookbid;
    String sent;

    private  LayoutInflater inflater=null;
    public ImageLoader imageLoader; 

    public LazyImageLoadAdapter(Activity a, List<String> n,List<String> fid,String s) {
        activity = a;
        names=n;
        facebookbid=fid;
        sent=s;


        inflater = (LayoutInflater)activity.
                            getSystemService(Context.LAYOUT_INFLATER_SERVICE);


        imageLoader = new ImageLoader(activity.getApplicationContext(),"p");
    }

    @Override
    public int getViewTypeCount() {

        if (getCount() != 0)
            return getCount();

        return 1;
    }


    public int getCount() {
        return facebookbid.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    /********* Create a holder Class to contain inflated xml file elements *********/
    public  class ViewHolder{

        public TextView text;
        public ImageView image;
        public ImageView checkmark;
        public RelativeLayout friendsrow;


    }

    public View getView(final int position, View convertView, ViewGroup parent) {

            convertView=null;


        final ViewHolder holder;

        if(convertView==null){

            /****** Inflate tabitem.xml file for each row ( Defined below ) *******/
            convertView = inflater.inflate(R.layout.planners_friends_listrow, null);

            /****** View Holder Object to contain tabitem.xml file elements ******/

            holder = new ViewHolder();
            holder.text = (TextView) convertView.findViewById(R.id.planner_friend_name);
          (ImageView)convertView.findViewById(R.id.planner_friend_image);
            holder.checkmark=(ImageView)convertView.findViewById(R.id.checkmark);
            holder.friendsrow=(RelativeLayout)convertView.findViewById(R.id.friendsrow);

           /************  Set holder with LayoutInflater ************/
            convertView.setTag( holder );
        }
        else 
            holder=(ViewHolder)convertView.getTag();


        holder.text.setText(names.get(position));




        Typeface   face = Typeface.createFromAsset(convertView.getContext().getAssets(),
                "fonts/MAXWELL REGULAR.ttf");
        holder.text.setTypeface(face);

        ImageView image = holder.image;
      String link;


      if(sent.equals("planners"))
      {link=facebookbid.get(position);

      }
      else
      {
          link="https://graph.facebook.com/"+facebookbid.get(position)+"/picture?type=large";
      }


        //DisplayImage function from ImageLoader Class
        imageLoader.DisplayImage(link, image);


        holder.friendsrow.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                boolean a=isNetworkConnected();
                if(a==true)
                {

                    if(sender.equals("settings"))
                    {

                    }
                    else if(sender.equals("savethedate"))
                    {



                        if(sid.contains(facebookbid.get(position)))
                        {
                            if(sid.contains("_"))
                            {
                                sid=sid.replace("_"+facebookbid.get(position), "");
                            }
                            else
                            {
                                sid=sid.replace(facebookbid.get(position), "");
                            }

                            nb_selections--;
                            selectedids.remove(selectedids.size()-1);
                            sidetitle.setText("Invite ("+String.valueOf(nb_selections)+") friends");
                            holder.checkmark.setVisibility(View.GONE);
                        }
                        else
                        {
                            if(sid.isEmpty())
                            {
                                sid=sid+facebookbid.get(position);  
                            }
                            else
                            {
                                sid=sid+"_"+facebookbid.get(position);  
                            }

                            nb_selections++;
                            selectedids.add(facebookbid.get(position));
                            sidetitle.setText("Invite ("+String.valueOf(nb_selections)+") friends");
                            holder.checkmark.setVisibility(View.VISIBLE);
                        }

                    }
                    else
                    {
                        String friendname=names.get(position);
                        String friendid=facebookbid.get(position);
                        String friendgender=gender.get(position);
                         Intent    resultIntent = new Intent(Friends.this,Newmarriage.class);
                         resultIntent.putExtra("facebookbid", friendid);
                         resultIntent.putExtra("name", friendname);
                         resultIntent.putExtra("gender", friendgender);

                    if(sender.equals("planner"))
                    {
                        resultIntent.putExtra("plannerid",friendid);
                         resultIntent.putExtra("imageurl","https://graph.facebook.com/"+friendid+"/picture?type=large");

                         setResult(Activity.RESULT_OK, resultIntent);
                         finish();  
                    }
                    else
                    {

                        resultIntent.putExtra("plannerid","");
                        resultIntent.putExtra("imageurl","");
                     setResult(Activity.RESULT_OK, resultIntent);
                     finish();  

                    }

                    }   
                }
                else
                {
                    Toast.makeText(getApplicationContext(),"No internet connection",Toast.LENGTH_LONG).show();  
                }


            }
        });



        /******** Set Item Click Listner for LayoutInflater for each row ***********/
     //   vi.setOnClickListener(new OnItemClickListener(position));
        return convertView;
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

    }
} 
公共类LazyImageLoadAdapter扩展BaseAdapter实现OnClickListener{
私人活动;
列表名称、facebook出价;
发送字符串;
专用充气机=空;
公共图像加载器;
公共LazyImageLoadAdapter(活动a、列表n、列表fid、字符串s){
活动=a;
名称=n;
facebookbid=fid;
发送=s;
充气器=(充气器)活动。
getSystemService(上下文布局\充气机\服务);
imageLoader=新的imageLoader(activity.getApplicationContext(),“p”);
}
@凌驾
public int getViewTypeCount(){
如果(getCount()!=0)
返回getCount();
返回1;
}
public int getCount(){
返回facebookbid.size();
}
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
/*********创建holder类以包含膨胀的xml文件元素*********/
公共类视图持有者{
公共文本查看文本;
公众形象;
公共图像查看复选标记;
公共关系;青年朋友;
}
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
convertView=null;
最终持票人;
if(convertView==null){
/******为每行(定义如下)膨胀tabitem.xml文件*******/
convertView=充气机。充气(R.layout.planners\u friends\u listrow,空);
/******要包含tabitem.xml文件元素的视图持有者对象******/
holder=新的ViewHolder();
holder.text=(TextView)convertView.findViewById(R.id.planner\u friend\u name);
(ImageView)convertView.findViewById(R.id.planner\u friend\u image);
holder.checkmark=(ImageView)convertView.findViewById(R.id.checkmark);
holder.friendsrow=(RelativeLayout)convertView.findViewById(R.id.friendsrow);
/************带压平机的固定架************/
convertView.setTag(支架);
}
其他的
holder=(ViewHolder)convertView.getTag();
holder.text.setText(names.get(position));
Typeface=Typeface.createFromAsset(convertView.getContext().getAssets(),
“fonts/MAXWELL REGULAR.ttf”);
holder.text.setTypeface(面);
ImageView image=holder.image;
串链;
如果(发送等于(“计划者”))
{link=facebookbid.get(位置);
}
其他的
{
链接=”https://graph.facebook.com/“+facebookbid.get(position)+”/picture?type=large”;
}
//ImageLoader类中的DisplayImage函数
imageLoader.DisplayImage(链接,图像);
holder.friendsrow.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
布尔值a=isNetworkConnected();
如果(a==true)
{
if(sender.equals(“设置”))
{
}
else if(sender.equals(“savethedate”))
{
if(sid.contains(facebookbid.get(position)))
{
if(sid.contains(“”))
{
sid=sid.replace(“”+facebookbid.get(position),”);
}
其他的
{
sid=sid.replace(facebookbid.get(位置),“”);
}
nb_选择--;
选择edids.remove(选择edids.size()-1);
sidetitle.setText(“邀请”(+String.valueOf(nb_选择)+”)朋友);
holder.checkmark.setVisibility(视图.消失);
}
其他的
{
if(sid.isEmpty())
{
sid=sid+facebookbid.get(位置);
}
其他的
{
sid=sid+“”+facebookbid.get(位置);
}
nb_++;
选择edids.add(facebookbid.get(position));
sidetitle.setText(“邀请”(+String.valueOf(nb_选择)+”)朋友);
支架.复选标记.设置可见性(视图.可见);
}
}
其他的
{
String friendname=names.get(位置);
String-friendid=facebookbid.get(位置);
String friendgender=gender.get(position);
Intent resultent=新的Intent(Friends.this、newmarry.class);
结果:putExtra(“facebookbid”,friendid);
resultIntent.putExtra(“名称”,friendname);
结果:putExtra(“性别”,friendgender);
if(发送方等于(“计划方”))
{
结果:putExtra(“plannerid”,friendid);
resultIntent.putExtra(“imageurl”https://graph.facebook.com/“+friendid+”/picture?type=large”);
设置结果(Activity.RESULT\u OK,resultent);
完成();
}
其他的
{
resultIntent.putExtra(“plannerid”,即“);
    public class LazyImageLoadAdapter extends BaseAdapter implements OnClickListener {

        private Activity activity;
        List<String> names, facebookbid;
        String sent;

        public ImageLoader imageLoader;
        private int size = 0;
        private HashMap<String, Boolean> mapClickStatus;

        public LazyImageLoadAdapter(Activity a, List<String> n, List<String> fid, String s) {
            activity = a;
            names = n;
            facebookbid = fid;
            sent = s;
            mapClickStatus = new HashMap<String, Boolean>();


            if (facebookbid != null)
                size = facebookbid.size();
// Give total size of the list item to getCount method
            imageLoader = new ImageLoader(activity, "p");
        }

        @Override
        public int getCount() {

            return size;
        }

        @Override
        public Object getItem(int position) {
            return position;
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        /*********
         * Create a holder Class to contain inflated xml file elements
         *********/
        public class ViewHolder {

            public TextView text;
            public ImageView image;
            public ImageView checkmark;
            public RelativeLayout friendsrow;


        }

        public View getView(final int position, View convertView, ViewGroup parent) {

            // convertView=null;

            //It should not be null every time

            final ViewHolder holder;

            if (convertView == null) {

                /****** Inflate tabitem.xml file for each row ( Defined below ) *******/
                convertView = LayoutInflater.from(activity).inflate(R.layout.planners_friends_listrow, parent, false);

                /****** View Holder Object to contain tabitem.xml file elements ******/

                holder = new ViewHolder();
                holder.text = (TextView) convertView.findViewById(R.id.planner_friend_name);
                (ImageView) convertView.findViewById(R.id.planner_friend_image);
                holder.checkmark = (ImageView) convertView.findViewById(R.id.checkmark);
                holder.friendsrow = (RelativeLayout) convertView.findViewById(R.id.friendsrow);

                /************  Set holder with LayoutInflater ************/
                convertView.setTag(holder);
            } else
                holder = (ViewHolder) convertView.getTag();


            holder.text.setText(names.get(position));


            Typeface face = Typeface.createFromAsset(convertView.getContext().getAssets(),
                    "fonts/MAXWELL REGULAR.ttf");
            holder.text.setTypeface(face);

            ImageView image = holder.image;
            String link;


            if (sent.equals("planners")) {
                link = facebookbid.get(position);

            } else {
                link = "https://graph.facebook.com/" + facebookbid.get(position) + "/picture?type=large";
            }


            //DisplayImage function from ImageLoader Class
            imageLoader.DisplayImage(link, image);

            // set the visibility of CheckMark ImageView based on the click status.
            if (mapClickStatus.get(facebookbid.get(position)))
                holder.checkmark.setVisibility(View.VISIBLE);
            else
                holder.checkmark.setVisibility(View.GONE);

            holder.friendsrow.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    boolean a = isNetworkConnected();
                    /// I dont know about the unique ID field in this so i took facebookbid.get(position) as a key
                    // To set click status of row item in hashmap.
                    mapClickStatus.put(facebookbid.get(position),
                            mapClickStatus.containsKey(facebookbid.get(position)) ? false : true);
                    if (a == true) {

                        if (sender.equals("settings")) {

                        } else if (sender.equals("savethedate")) {


                            if (sid.contains(facebookbid.get(position))) {
                                if (sid.contains("_")) {
                                    sid = sid.replace("_" + facebookbid.get(position), "");
                                } else {
                                    sid = sid.replace(facebookbid.get(position), "");
                                }

                                nb_selections--;
                                selectedids.remove(selectedids.size() - 1);
                                sidetitle.setText("Invite (" + String.valueOf(nb_selections) + ") friends");
                                // holder.checkmark.setVisibility(View.GONE);
                            } else {
                                if (sid.isEmpty()) {
                                    sid = sid + facebookbid.get(position);
                                } else {
                                    sid = sid + "_" + facebookbid.get(position);
                                }

                                nb_selections++;
                                selectedids.add(facebookbid.get(position));
                                sidetitle.setText("Invite (" + String.valueOf(nb_selections) + ") friends");
                                //  holder.checkmark.setVisibility(View.VISIBLE);
                            }
                            // TO refresh view with updated checkmark status
                            notifyDataSetChanged();
                        } else {
                            String friendname = names.get(position);
                            String friendid = facebookbid.get(position);
                            String friendgender = gender.get(position);
                            Intent resultIntent = new Intent(Friends.this, Newmarriage.class);
                            resultIntent.putExtra("facebookbid", friendid);
                            resultIntent.putExtra("name", friendname);
                            resultIntent.putExtra("gender", friendgender);

                            if (sender.equals("planner")) {
                                resultIntent.putExtra("plannerid", friendid);
                                resultIntent.putExtra("imageurl", "https://graph.facebook.com/" + friendid + "/picture?type=large");

                                setResult(Activity.RESULT_OK, resultIntent);
                                finish();
                            } else {

                                resultIntent.putExtra("plannerid", "");
                                resultIntent.putExtra("imageurl", "");
                                setResult(Activity.RESULT_OK, resultIntent);
                                finish();

                            }

                        }
                    } else {
                        Toast.makeText(getApplicationContext(), "No internet connection", Toast.LENGTH_LONG).show();
                    }


                }
            });


            /******** Set Item Click Listner for LayoutInflater for each row ***********/
            //   vi.setOnClickListener(new OnItemClickListener(position));
            return convertView;
        }

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

        }
    }
convertView = LayoutInflater.from(activity).inflate(R.layout.planners_friends_listrow, parent, false);
if (checked) {
  //set visibility of the checkmark to visible 
} else {
  //set visibility of the checkmark to gone 
}