android - 如何从另一个类更改 recyclerView 适配器内的 ImageView?
问题描述
如何从 RectangularIViewObjSeter 更改 charchama_adapter 类中的 ImageView?
RectangularIViewObjSeter 类中的 setView 方法是我编写代码块以更改回收器视图适配器内的图像视图的地方。值和资源都不是 null 或 0。我认为问题在于在图像视图中设置上下文。但我不确定。
public class RectangularIViewObjSeter implements IViewObjSeter {
Context context;
ImageView imageView;
public RectangularIViewObjSeter(Context context) {
this.context = context;
}
@Override
public void setView(String Value, int Resource) {
imageView = ((Activity)context).findViewById(Resource);
Uri uri = Uri.parse(Value);
Picasso.get().load(uri).into(imageView);
}
}
我的回收站视图是这样的(PS 它在一个片段内)
public class charchama_adapter extends
RecyclerView.Adapter<charchama_adapter.MyViewHolder> {
View v;
ArrayList<ContentPOJO> list;
int sizeOfNesContentList;
int Height, Width;
Context context;
public charchama_adapter(ArrayList<ContentPOJO> list, Context context) {
this.list = new ArrayList<>();
this.list = list;
if (list.isEmpty()) {
sizeOfNesContentList = 0;
} else {
sizeOfNesContentList = list.size();
}
}
public class MyViewHolder extends RecyclerView.ViewHolder {
public MyViewHolder(View itemView) {
super(itemView);
}
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int
viewType) {
v =
LayoutInflater.from(parent.getContext()).inflate(R.layout.charchama_adapter,
null);
Height = parent.getHeight();
Width = parent.getWidth();
context = parent.getContext();
MyViewHolder viewHolder = new MyViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
SetView setView = new SetView(context);
ViewResource viewResource = new
ViewResourceAdapter().setHeaderResource(R.id.contentHeader_adapterCharchama)
.setBodyResource(R.id.contentBody_adapterCharchama)
.setImageResource(R.id.backgroundImage_charchamaAdapter)
.setAuthorAndDateResource(R.id.autherAndDate_charchamaFragment)
.setNewsCategory(R.id.newsCategory_charchamaAdapter).getViewResource();
ContentPOJO contentPOJO = list.get(position);
setView.setResources(viewResource, contentPOJO, false);
}
@Override
public int getItemCount() {
return sizeOfNesContentList;
}
}
这是另一个设置我的视图的类
public class SetView implements ISetView {
Context context;
public SetView(Context context) {
this.context = context;
}
@Override
public void setResources(ViewResource viewResource, ContentPOJO
contentPOJO, Boolean CircularImage) {
if(viewResource.getImageResource() !=0){
IViewObjSeter iViewObjSeter;
if (CircularImage == true) {
iViewObjSeter = new CircularIViewObjSeter(context);
} else {
iViewObjSeter = new RectangularIViewObjSeter(context);
}
iViewObjSeter.setView(contentPOJO.getImageURL(),
viewResource.getImageResource());
}
TextViewSetter textViewSetter = new TextViewSetter(context);
if (viewResource.getAuthorAndDateResource() != 0) {
if (contentPOJO.getDate().equals(null)) {
textViewSetter.setView(contentPOJO.getAuthor(),
viewResource.getAuthorAndDateResource());
} else {
textViewSetter.setView(contentPOJO.getAuthor() + " | " +
contentPOJO.getDate(), viewResource.getAuthorAndDateResource());
}
}
if(viewResource.getBodyResource()!=0){
textViewSetter.setView(contentPOJO.getStory(),
viewResource.getBodyResource());
}
if(viewResource.getHeaderResource() !=0){
textViewSetter.setView(contentPOJO.getHeading(),
viewResource.getHeaderResource());
}
if(viewResource.getNewsCategory()!=0){
textViewSetter.setView(contentPOJO.getNewsCategory(),
viewResource.getNewsCategory());
}
}
}
解决方案
在charchama_adapter
类中,您定义一个名为context
如下的字段:
Context context;
但是您没有在类的构造函数中对其进行初始化charchama_adapter
,这就是问题所在。
public charchama_adapter(ArrayList<ContentPOJO> list, Context context) {
this.list = new ArrayList<>();
this.list = list;
this.context = context; //add this line
if (list.isEmpty()) {
sizeOfNesContentList = 0;
} else {
sizeOfNesContentList = list.size();
}
}
推荐阅读
- java - 嵌套的 For 循环计数到 1-100 和 1-1000
- git - 在本地机器上的 Git 中设置“原始”URL 以使用 AWS EC2 Ubuntu 16 实例
- java - 可以在没有迭代的情况下在 HashMap 中获取、放置和删除 elemetn 导致 ConcurrentModificationException?
- cordova - navigator.camera 在 Phonegap Build 上未定义
- linux - 重启后 binfmt_misc 的设置消失了
- arrays - 根据多个条件对哈希数组进行排序和重新排列
- bash - 在bash中查找所有以扩展名结尾的文件
- scala - Scala错误类型子类型的表达式不符合预期的类型T
- c# - 在 c# 中的 ssh.net 下命令未完全执行
- python - 如何根据有序列表替换熊猫数据框列中的元素?