我正在尝试从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的构建是错误的。 请帮忙