私はアプリに同様の機能を実装しようとしています、これはリサイクルされたビューのビューホルダーからのスニペットです。
リサイクル業者カスタムアダプター
public class PostAdapterViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView title,user,description,tag,time,designation;
Long date;
ImageView imageView,bookmark,profilepic,sharebutton,like;
RelativeLayout head;
LinearLayout content;
DatabaseReference reference;
Context context;
String name;
public void setContext(Context context) {
this.context = context;
}
public PostAdapterViewHolder (final View itemView) {
super(itemView);
itemView.setOnClickListener(this);
head = (RelativeLayout) itemView.findViewById(R.id.head);
content = (LinearLayout) itemView.findViewById(R.id.content);
imageView =(ImageView)itemView.findViewById(R.id.imageview);
designation = (TextView) itemView.findViewById(R.id.designation);
like =(ImageView)itemView.findViewById(R.id.like);
profilepic = (ImageView) itemView.findViewById(R.id.imageView2);
bookmark =(ImageView)itemView.findViewById(R.id.bookmark);
title = (TextView) itemView.findViewById(R.id.title);
description = (TextView) itemView.findViewById(R.id.description);
time = (TextView) itemView.findViewById(R.id.date);
tag = (TextView) itemView.findViewById(R.id.tag);
sharebutton = (ImageView) itemView.findViewById(R.id.sharebutton);
user = (TextView) itemView.findViewById(R.id.username);
like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageView i = (ImageView) itemView.findViewById(R.id.like);
Drawable a = i.getBackground();
if (a.getConstantState().equals(context.getDrawable(R.drawable.emptyup).getConstantState())){
i.setImageDrawable(context.getDrawable(R.drawable.fillup));
} else {
i.setImageDrawable(context.getDrawable(R.drawable.emptyup));
}
}
});
}
}
}
01-09 10:43:45.747 6602-6602/ctize.connectplus.com.communitize E/AndroidRuntime:FATAL EXCEPTION:main Process:ctize.connectplus.com.communitize、PID:6602 Android.content.res.Resources $ NotFoundException:リソースID#0x7f07007e、Android.content.res.Resources.getValue(Resources.Java:1397)、Android.content.res.Resources.getDrawable(Resources.Java:843)、Android.content.Context.getDrawable(Context.Java :458)ctize.connectplus.com.communitize.PostAdapterViewHolder $ 2.onClick(PostAdapterViewHolder.Java:98)at Android.view.View.performClick(View.Java:5226)at Android.view.View $ PerformClick.run(View .Java:21350)Android.os.Handler.handleCallback(Handler.Java:739)at Android.os.Handler.dispatchMessage(Handler.Java:95)at Android.os.Looper.loop(Looper.Java:148) Android.app.ActivityThread.main(ActivityThread.Java:5582)at Java.lang.reflect.Method.invoke(Native Method)at com.Android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.Java:726) com.Android.internal.os.ZygoteでInit.main(ZygoteInit.Java:616)
ログを確認する。問題はあなたのdrawable
背景にありますので、それを見てください。タイプX24
画像を変更すると、問題が解決します。
2つ目は、一度に2つの画像が表示されることです。したがって、.xml
ファイルで設定している背景を削除する必要があります。これで問題ありません。
Lollipop以降のバージョンでのみ機能するcontext.getDrawable(R.drawable.fillup)
を使用しています。 context.getResources().getDrawable(R.drawable.fillup)
を使用して、リソースから画像を取得します。
<CheckBox Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="new checkbox"
Android:background="@drawable/checkbox_background"
Android:button="@drawable/checkbox" />
ImageViewの代わりにチェックボックスを使用してみてください
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_checked="true" Android:state_focused="true"
Android:drawable="@drawable/fillup" />
<item Android:state_checked="false" Android:state_focused="true"
Android:drawable="@drawable/emptyup" />
<item Android:state_checked="false"
Android:drawable="@drawable/emptyup" />
<item Android:state_checked="true"
Android:drawable="@drawable/fillup" />
</selector>
if(a.getConstantState()。equals(context.getDrawable(R.drawable.emptyup).getConstantState())){
i.setImageDrawable(context.getDrawable(R.drawable.fillup)); } else { i.setImageDrawable(context.getDrawable(R.drawable.emptyup)); }
Androidバージョンの問題のため、これらの行でエラーが発生しています。
これに従います https://developer.Android.com/guide/topics/graphics/vector-drawable-resources.html#vector-drawables-backward-solution 、setImageDrawableの代わりにsetImageResource()を使用する必要があります()
ドローアブルリソースの画像がdrawableフォルダーにあるかどうかを確認しますnotdrawable-24。
私はすでにこの問題を抱えていますが、画像リソースをdrawableフォルダに移動することで解決します。