使用AsyncTask和适配器

时间:2016-12-11 09:36:56

标签: android listview android-asynctask android-adapter

我正在尝试从AsyncTask构建ListView。 问题是我在listView的所有项目中都有一个ImageView。 在我的类apadter(ChallengeAdapter)中,我需要检查这个按钮ImageView是否被点击一次,然后切换我将更改ImageView(imageView.setImageResource(...))。

  

这是我的类适配器(ChallengeAdapter)

   package com.example.daly.bigchallenge;

   import android.app.Activity;
   import android.util.Log;
   import android.view.LayoutInflater;
   import android.view.View;
   import android.view.ViewGroup;
   import android.widget.ArrayAdapter;
   import android.widget.ImageView;
   import android.widget.TextView;
   import java.util.ArrayList;


   public class ChallengeAdapter extends ArrayAdapter<Challenge> {
   Challenge currentChallenge;
   ImageView imageViewParticipateChallenge, imageViewLikeChallenge;


public ChallengeAdapter(Activity context, ArrayList<Challenge> challenges) {

    super(context, 0, challenges);
}


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


    View listItemView = convertView;
    if (listItemView == null) {
        listItemView = LayoutInflater.from(getContext()).inflate(
                R.layout.challenges_list_item, parent, false);
    }

    currentChallenge = getItem(position);


    TextView textViewTitleChallenge = (TextView) listItemView.findViewById(R.id.textViewTitleChallenge);
    textViewTitleChallenge.setText(currentChallenge.getChall_title());

    TextView textViewDescriptionChallenge = (TextView) listItemView.findViewById(R.id.textViewDescriptionChallenge);
    textViewDescriptionChallenge.setText(currentChallenge.getChall_description());

    imageViewParticipateChallenge = (ImageView) listItemView.findViewById(R.id.imageViewParticipateChallenge);
    imageViewLikeChallenge = (ImageView) listItemView.findViewById(R.id.imageViewLikeChallenge);

    if (currentChallenge.chall_is_liked_by_current_user == 1)
        imageViewLikeChallenge.setImageResource(R.drawable.like);
    else  if (currentChallenge.chall_is_liked_by_current_user == 0)
        imageViewLikeChallenge.setImageResource(R.drawable.dislike);

    imageViewParticipateChallenge.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.e("clicked", "clicked");
        }
    });
    TextView textViewNbrLikesChallenges = (TextView) listItemView.findViewById(R.id.textViewNbrChallengeLikes);
    textViewNbrLikesChallenges.setText(Long.toString(currentChallenge.getChall_nbr_likes()));

    imageViewLikeChallenge.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.e("clicked", "clicked");
        }
    });


    return listItemView;
}

}

AsyncTask进入我的活动(HomeActivity)。 在我的AsyncTask中,我发送一个请求(诸如脚本PHP之类的URL)以从服务器中的dataBase获取数据。 响应是一个JSONObject,它的工作原理。 我认为问题是getView(类ChallengeAdapter)被调用超过一次,所以为什么listView的构建是错误的。 请帮忙

0 个答案:

没有答案