私のListView
アイテムは、以下のコンポーネントで構成されています。TextView
そして、その下に2つのImageViews
~とdislike
があります。1つのListViewアイテムをAndroidでクリックすると、他のListViewアイテムに影響がありますか?
だから、私は青に灰色からlike
またはdislike
ImageView
を変更できるようにしたいlike
またはdislike
のいずれかをクリックしたとき。
like
をクリックすると、like
ImageView
はグレーからブルーに変わります。しかし、対応するListView
アイテムだけでなく、リスト内のすべての3番目のアイテムについて - リストにある最初のアイテムのlike
をクリックすると、4番目、7番目、10番目のアイテムlike
ImageView
からの変更灰色から青まで。
ファイルroot element
の私のpost_list_item.xml
には、次のように指定しました。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);
}
});
}
}
ありがとう:あなたのケースでは、最も簡単な方法は、あなたの
onClick
メソッドに渡されたビューを使用することです。私はあなたが言ったことをしたし、それはまだ動作しません。 – Nikolajイメージを変更しているかどうかを確認します。あなたが以前に言ったように他のアイテムに影響を与えていますか? –
はい、イメージを変更していますが、それでもリスト内の他のアイテムに影響します。 – Nikolaj