我有一個由自定義適配器填充的列表視圖。這個listview有一個由imageview和textview組成的自定義佈局。單擊列表視圖中的單個組件
我想要做的是當我從任何一行按下該imageview時,它將更改其UI(setAlpha)並運行後臺網絡請求。
但是,我不知道如何做到這一點,如果組件是獨一無二的。當我點擊任何一行的imageview時,只有最後一行會受到影響。我在適配器中完成了這一切。
@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (view == null) {
vh = new ViewHolder();
view = layoutInflater.inflate(R.layout.row_list_follows, null);
vh.ivHeart = (ImageView) view.findViewById(R.id.imgHeart);
vh.tvMerchantName = (TextView) view.findViewById(R.id.txtMerchantName);
view.setTag(vh);
} else {
vh = (ViewHolder) view.getTag();
}
lf = arrListFollow.get(i);
vh.tvMerchantName.setText(lf.getMerchantName());
// only the last row affected
vh.ivHeart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!lf.isFollowed()) {
vh.ivHeart.setAlpha(1f);
lf.setFollowed(true);
} else {
vh.ivHeart.setAlpha(0.3f);
lf.setFollowed(false);
}
}
});
return view;
}
我認爲這是顯而易見的,因爲所有在此佈局上誇大的圖像獲取相同的ID。到目前爲止,這是我如何做到的,但無法讓它工作得很好。
如何點擊listview行上的單個組件並以編程方式更改其UI?
不完全是一個解決問題的方法,但看看這個視頻由切特哈瑟,你應該得到一個想法如何做到這一點。 https://www.youtube.com/watch?v=YCHNAi9kJI4 – iZBasit 2014-09-11 04:50:09