我無法弄清楚我錯在哪裏。我在我的自定義ListView適配器內創建了一個按鈕,我已經實現了ViewHolder模式併爲按鈕設置了一個OnClickListener。ViewHolder模式問題。相同的OnClickListener爲ArrayAdapter中的所有按鈕設置
問題是,無論何時點擊任何行上的按鈕,我都會得到相同的點擊結果。相同的標題,相同的用戶名
我還需要設置什麼?謝謝,聖誕快樂!
自定義的ListView適配器:在if-else語句之外
public FeedListViewAdapter(Context context, int layoutResourceId, ArrayList<FeedItemsSetter> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
static class ViewHolder {
ImageView image;
public TextView postTitle;
public TextView postCateg;
public TextView userInfo;
public TextView likerNames;
public ImageView feedUserImage;
public Button feedLike;
public Button feedShare;
public Button likeButton;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
//ViewHolder holder = null;
// test as field, maybe problem
item = data.get(position);
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
ViewHolder holder = new ViewHolder();
holder.postTitle = (TextView) row.findViewById(R.id.postTitle);
holder.postCateg = (TextView) row.findViewById(R.id.postCateg);
holder.userInfo = (TextView) row.findViewById(R.id.feedUserName);
holder.likerNames = (TextView) row.findViewById(R.id.likerNames);
holder.feedUserImage = (ImageView) row.findViewById(R.id.feedUserImage);
holder.image = (ImageView) row.findViewById(R.id.image);
holder.feedLike = (Button) row.findViewById(R.id.feedLike);
holder.feedShare = (Button) row.findViewById(R.id.feedShareBtn);
holder.likeButton = (Button) row.findViewById(R.id.feedLike);
row.setTag(holder);
}
ViewHolder holder = (ViewHolder) row.getTag();
holder.postTitle.setText(item.getTitle());
holder.postCateg.setText(item.getCategory());
holder.userInfo.setText(item.getUser());
holder.likerNames.setText(item.getLiker());
holder.likerNames.setTag(item.getLikersLong());
Picasso.with(context)
.load("https://graph.facebook.com/" + item.getUserId()
+ "/picture?type=large")
.placeholder(R.drawable.placeholder)
.error(R.drawable.placeholder)
.transform(new RoundedTransformation(90, 4)).resize(100, 100)
.centerCrop().into(holder.feedUserImage);
Picasso.with(context)
.load("http://www.edmondvarga.com/gastrolove/uploads/"
+ item.getImage()).into(holder.image);
holder.likerNames.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//mListener.onNamesClick(v.getTag().toString());
}
});
holder.feedLike.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.out.println(item.getUser() + item.getTitle());
});
return row;
}
public void setCallback(facebookShareListener mListener) {
this.mListener = mListener;
}
public static interface facebookShareListener {
public void onSharePressed(String title, String imagename, String userId);
public void onNamesClick(String title);
}
}
移動'項= data.get(位置)' –
@MD沒有性差異,我仍然對所有點擊獲得相同的名稱。 –
@EdmondTamas按名稱引用此'mListener.onNamesClick(v.getTag()。toString());'? – Raghunandan