我的ListView
項目包含以下組件 - TextView
,然後在它下面有兩個ImageViews
- like
和dislike
。Android單擊一個ListView項目會影響其他ListView項目嗎?
所以,當我在任like
或dislike
單擊我希望能夠從灰色like
或dislike
ImageView
變爲藍色。
當我點擊like
時,like
ImageView
確實從灰色變爲藍色。但不僅對於相應的ListView
項目,而是列表中的每個第3項 - 如果我在我的列表中有10個項目,並且我點擊列表中第一項的like
那麼第4,7和10項like
ImageView
從灰色到藍色。
在我的post_list_item.xml
中的文件root element
我指定了以下android:descendantFocusability="blocksDescendants"
但它也沒有幫助。
我的問題是 - 什麼我必須這樣做,當我點擊任何like
或dislike
我將能夠改變like
或dislike
ImageView
由灰色變爲藍色,而不會影響其他列表中的項目?
這裏是我的CursorAdapter
public class PostCursorAdapter extends CursorAdapter {
public PostCursorAdapter(Context context, Cursor c, int flags) {
super(context, c, flags);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return LayoutInflater.from(context).inflate(R.layout.post_list_item, parent, false);
}
@Override
public void bindView(View view, final Context context, Cursor cursor) {
String post = cursor.getString(cursor.getColumnIndex(DBOpenHelper.POST));
final String liked = cursor.getString(cursor.getColumnIndex(DBOpenHelper.LIKED));
String disliked = cursor.getString(cursor.getColumnIndex(DBOpenHelper.DISLIKED));
final String post_id = cursor.getString(cursor.getColumnIndex(DBOpenHelper.POST_ID));
String userliked = cursor.getString(cursor.getColumnIndex(DBOpenHelper.USER_LIKED));
TextView tvPost = (TextView) view.findViewById(R.id.tvPost);
tvJoke.setText(post);
TextView tvLikeCount = (TextView) view.findViewById(R.id.tvLikeCount);
tvLikeCount.setText(liked);
TextView tvDislikesCount = (TextView) view.findViewById(R.id.tvDislikeCount);
tvDislikesCount.setText(disliked);
final ImageView ivLike = (ImageView) view.findViewById(R.id.ivLike);
// has the user liked it?
int check = Integer.parseInt(userliked);
if(check == 1){
String uri = "@drawable/like_blue"; // where myresource (without the extension) is the file
int imageResource = context.getResources().getIdentifier(uri, null, context.getPackageName());
Drawable res = context.getResources().getDrawable(imageResource);
ivLike.setImageDrawable(res);
}
ivLike.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String uri = "@drawable/like_blue";
int imageResource = context.getResources().getIdentifier(uri, null, context.getPackageName());
Drawable res = context.getResources().getDrawable(imageResource);
ivLike.setImageDrawable(res);
}
});
}
}
感謝您抽出時間來回答我的問題。我只是做了你所說的,但它仍然不起作用。 – Nikolaj
它正在改變圖像或沒有。它是否會影響到像你之前說過的其他項目? –
是的,它正在改變圖像,但它仍然影響列表中的其他項目。 – Nikolaj