Android 在listview中上下滚动后,Like按钮和Like计数器重置为旧值

Android 在listview中上下滚动后,Like按钮和Like计数器重置为旧值,android,baseadapter,notifydatasetchanged,Android,Baseadapter,Notifydatasetchanged,喜欢某个新闻项目后,心脏按钮显示红色,计数器设置为1,但在上下滚动后,计数器返回到零,心脏按钮从服务器加载时从红色变为灰色。我尝试使用notifyDataSetChanged(),但在适配器中不起作用……下面是我实现的代码 public class ListViewAdapterSup extends BaseAdapter { // Declare Variables Context context; LayoutInflater inflater; ArrayList<HashMap

喜欢某个新闻项目后,心脏按钮显示红色,计数器设置为1,但在上下滚动后,计数器返回到零,心脏按钮从服务器加载时从红色变为灰色。我尝试使用notifyDataSetChanged(),但在适配器中不起作用……下面是我实现的代码

public class ListViewAdapterSup extends BaseAdapter {

// Declare Variables
Context context;
LayoutInflater inflater;
ArrayList<HashMap<String, String>> data;
ImageLoader imageLoader;
HashMap<String, String> resultp = new HashMap<String, String>();



public ListViewAdapterSup(Context context,
        ArrayList<HashMap<String, String>> arraylist) {
    this.context = context;
    data = arraylist;
    imageLoader = new ImageLoader(context);
}

@Override
public int getCount() {
    return data.size();
}



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

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

static class ViewHolder {

    // Declare Variables
    TextView supmessageTV;
    ImageView ImageLike;
    ImageView ImageComment;
}

ViewHolder holder;



public View getView(final int position, View itemView, ViewGroup parent)     {
    itemView = null;

    if (itemView == null) {

        //itemView.setTag();
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    itemView = inflater.inflate(R.layout.sups_list_item, parent, false);
    // Get the position
    resultp = data.get(position);
    holder = new ViewHolder();

    // Locate the TextViews in listview_item.xml
    holder.messageTV = (TextView) itemView.findViewById(R.id.status);
    // Locate the ImageView in listview_item.xml
    holder.ImageLike = (ImageView) itemView.findViewById(R.id.likeImage);
    holder.ImageComment = (ImageView) itemView.findViewById(R.id.ImageComment);

    holder.viewLikesImageClick = (ImageView) itemView.findViewById(R.id.imageVieew);

    }

     else{

         holder = (ViewHolder) itemView.getTag();
     }




    // Capture position and set results to the TextViews
    holder.messageTV.setText(resultp.get(News.MESSAGE));
    holder.likesCountTV.setText(resultp.get(News.LIKES_COUNT));
    holder.commentsCountTV.setText(resultp.get(News.COMMENTS_COUNT));



            holder.ImageLike.setTag(holder);
            holder.ImageLike.setOnClickListener(new View.OnClickListener() {
                 @TargetApi(Build.VERSION_CODES.LOLLIPOP)
                @Override
                public void onClick(View view) {

                     if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {

                         holder = (ViewHolder)view.getTag();
                            resultp = data.get(position);

                            if(holder.ImageLike.getDrawable().getConstantState().equals(context.getResources().getDrawable(R.drawable.ic_favorite_white_24dp).getConstantState())){
                            resultp = data.get(position);

                                ConnectionDetector cd = new ConnectionDetector(context);
                                if (!cd.isConnectingToInternet()) {

                                    Toast.makeText(context,"No internet connection",Toast.LENGTH_SHORT).show();


                                    }
                                else
                                {

                                new LikeNews().execute();
                                String number = holder.likesCountTV.getText().toString();
                                int num = Integer.parseInt(number);
                                int nene = num + 1;
                                String str = String.valueOf(nene);

                                holder.likesCountTV.setText(str);   

                                //holder.likeBTN.setText("LIKED");
                                holder.ImageLike.setImageResource(R.drawable.ic_favorite_red_24dp);

                                }

                        }

                            else if(holder.ImageLike.getDrawable().getConstantState().equals(context.getResources().getDrawable(R.drawable.ic_favorite_red_24dp).getConstantState())){
                                resultp = data.get(position);

                                    ConnectionDetector cd = new ConnectionDetector(context);
                                    if (!cd.isConnectingToInternet()) {

                                        Toast.makeText(context,"No internet connection",Toast.LENGTH_SHORT).show();


                                        }
                                    else
                                    {

                                    new UnLikeNews().execute();
                                    String number = holder.likesCountTV.getText().toString();
                                    int num = Integer.parseInt(number);
                                    int nene = num - 1;
                                    String str = String.valueOf(nene);

                                    holder.likesCountTV.setText(str);   

                                  //  holder.likeBTN.setText("Like");
                                    holder.ImageLike.setImageResource(R.drawable.ic_favorite_white_24dp);

                                    }
                                }

                        }

                           else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {  

                               holder = (ViewHolder)view.getTag();
                                resultp = data.get(position);

                                if(holder.ImageLike.getDrawable().getConstantState().equals(holder.ImageLike.getContext().getDrawable(R.drawable.ic_favorite_white_24dp).getConstantState())){
                                resultp = data.get(position);

                                    ConnectionDetector cd = new ConnectionDetector(context);
                                    if (!cd.isConnectingToInternet()) {

                                        Toast.makeText(context,"No internet connection",Toast.LENGTH_SHORT).show();


                                        }
                                    else
                                    {

                                    new LikeNews().execute();
                                    String number = holder.likesCountTV.getText().toString();
                                    int num = Integer.parseInt(number);
                                    int nene = num + 1;
                                    String str = String.valueOf(nene);

                                    holder.likesCountTV.setText(str);   

                                    holder.ImageLike.setImageResource(R.drawable.ic_favorite_red_24dp);

                                    }

                            }

                                else if(holder.ImageLike.getDrawable().getConstantState().equals(holder.ImageLike.getContext().getDrawable(R.drawable.ic_favorite_red_24dp).getConstantState())){
                                    resultp = data.get(position);

                                        ConnectionDetector cd = new ConnectionDetector(context);
                                        if (!cd.isConnectingToInternet()) {

                                            Toast.makeText(context,"No internet connection",Toast.LENGTH_SHORT).show();


                                            }
                                        else
                                        {

                                        new UnLikeNews().execute();
                                        String number = holder.likesCountTV.getText().toString();
                                        int num = Integer.parseInt(number);
                                        int nene = num - 1;
                                        String str = String.valueOf(nene);

                                        holder.likesCountTV.setText(str);   

                                        holder.ImageLike.setImageResource(R.drawable.ic_favorite_white_24dp);

                                        }
                                    }

                            }



                }
            });


    return itemView;
}


public class LikeNews extends AsyncTask<String, String, String> {

    boolean hasUserLiked = false; 

    protected void onPreExecute() {
        super.onPreExecute();

    }

    @Override
    protected String doInBackground(String... strings) {

            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("www.example.com");


            try {
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);

                   nameValuePairs.add(new BasicNameValuePair("id", "01"));
                   nameValuePairs.add(new BasicNameValuePair("username", user));
                   nameValuePairs.add(new BasicNameValuePair("user_involved", "mark");

                   httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                   httpclient.execute(httppost);

                   hasUserLiked = true; 

        } catch (NullPointerException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String lenghtOfFile) {



    }

} 

public class UnLikeNews extends AsyncTask<String, String, String> {

protected void onPreExecute() {
    super.onPreExecute();

}

@Override
protected String doInBackground(String... strings) {

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("www.example.com");


        try {
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);

               nameValuePairs.add(new BasicNameValuePair("id", "01"));
               nameValuePairs.add(new BasicNameValuePair("username", user));

               httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
               httpclient.execute(httppost);



    } catch (NullPointerException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

@Override
protected void onPostExecute(String lenghtOfFile) {

//       


}


} 




}
公共类ListViewAdapterUp扩展了BaseAdapter{
//声明变量
语境;
充气机;
阵列列表数据;
图像加载器;
HashMap resultp=新的HashMap();
公共ListViewAdapterUp(上下文,
ArrayList(ArrayList){
this.context=上下文;
数据=数组列表;
imageLoader=新的imageLoader(上下文);
}
@凌驾
public int getCount(){
返回data.size();
}
@凌驾
公共对象getItem(int位置){
返回null;
}
@凌驾
公共长getItemId(int位置){
返回0;
}
静态类视窗夹{
//声明变量
短信电视;
图像视图图像化;
ImageView ImageComment;
}
视窗座;
公共视图getView(最终整数位置、视图项视图、视图组父级){
itemView=null;
如果(itemView==null){
//setTag();
充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
itemView=充气机。充气(R.layout.sups\u list\u项目,父项,false);
//获得职位
resultp=data.get(位置);
holder=新的ViewHolder();
//在listview_item.xml中找到文本视图
holder.messageTV=(TextView)itemView.findViewById(R.id.status);
//在listview_item.xml中找到ImageView
holder.ImageLike=(ImageView)itemView.findViewById(R.id.likeImage);
holder.ImageComment=(ImageView)itemView.findViewById(R.id.ImageComment);
holder.viewLikesImageClick=(ImageView)itemView.findViewById(R.id.ImageView);
}
否则{
holder=(ViewHolder)itemView.getTag();
}
//捕获位置并将结果设置为文本视图
holder.messageTV.setText(resultp.get(News.MESSAGE));
holder.likescontv.setText(resultp.get(News.LIKES_COUNT));
holder.commentsconttv.setText(resultp.get(News.COMMENTS_COUNT));
holder.ImageLike.setTag(holder);
holder.ImageLike.setOnClickListener(新视图.OnClickListener(){
@TargetApi(Build.VERSION\u code.LOLLIPOP)
@凌驾
公共void onClick(视图){
if(Build.VERSION.SDK\u INT=Build.VERSION\u code.LOLLIPOP){
holder=(ViewHolder)view.getTag();
resultp=data.get(位置);
if(holder.ImageLike.getDrawable().getConstantState().equals(holder.ImageLike.getContext().getDrawable(R.drawable.ic\u favorite\u white\u 24dp).getConstantState()){
resultp=data.get(位置);
ConnectionDetector cd=新的ConnectionDetector(上下文);
如果(!cd.isConnectingToInternet()){
烤面包
if (itemView == null) {

        //itemView.setTag();
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    itemView = inflater.inflate(R.layout.sups_list_item, parent, false);
    // Get the position
    resultp = data.get(position);
    holder = new ViewHolder();

    // Locate the TextViews in listview_item.xml
    holder.messageTV = (TextView) itemView.findViewById(R.id.status);
    // Locate the ImageView in listview_item.xml
    holder.ImageLike = (ImageView) itemView.findViewById(R.id.likeImage);
    holder.ImageComment = (ImageView) itemView.findViewById(R.id.ImageComment);

    holder.viewLikesImageClick = (ImageView)     itemView.findViewById(R.id.imageVieew);

    itemView.setTag(holder);

}
holder = (ViewHolder) itemView.getTag();
@Override
public Object getItem(int position) {
    return data.get(position);
}