java - 为什么我的数组值在回收站视图中不起作用
问题描述
我正在尝试在视图中附加数据。但我在这里显示OnBind
方法错误。
这是代码mainActivity
:
package com.example.recyclerview;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
int [] image = {
R.drawable.deep_blue,R.drawable.dual_matter,R.drawable.gradiant,
R.drawable.light_blue,R.drawable.yellow,R.drawable.red
};
MyAdapter myAdapter;
String [] title,desc;
RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView=findViewById(R.id.RecyclerViewID);
title=getResources().getStringArray(R.array.logo_name);
desc=getResources().getStringArray(R.array.logo_desc);
myAdapter =new MyAdapter(this,title,desc,image);
recyclerView.setAdapter(myAdapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
}
}
这是Adapter
类的代码:
package com.example.recyclerview;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyAdapterHolder> {
Context context;
String [] title;
String [] desc;
int [] image;
public MyAdapter(Context context, String[] title, String[] desc, int[] image) {
this.context = context;
this.title = title;
this.desc = desc;
this.image = image;
}
@NonNull
@Override
public MyAdapterHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(context);
View view=layoutInflater.inflate(R.layout.sampleview,viewGroup,false);
return new MyAdapterHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MyAdapterHolder myAdapterHolder, int position) {
myAdapterHolder.titleTV.setText(title[i]);
myAdapterHolder.descTV.setText(desc[i]);
myAdapterHolder.myimageView.setImageResource(image[i]);
}
@Override
public int getItemCount() {
return title.length;
}
public class MyAdapterHolder extends RecyclerView.ViewHolder {
TextView titleTV,descTV;
ImageView myimageView;
public MyAdapterHolder(@NonNull View itemView) {
super(itemView);
titleTV=itemView.findViewById(R.id.titleTextViewID);
descTV=itemView.findViewById(R.id.descTextViewID);
myimageView=itemView.findViewById(R.id.myImageViewID);
}
}
}
解决方案
@Override
public void onBindViewHolder(@NonNull MyAdapterHolder myAdapterHolder, int position) {
myAdapterHolder.titleTV.setText(title[i]);
myAdapterHolder.descTV.setText(desc[i]);
myAdapterHolder.myimageView.setImageResource(image[i]);
}
据我所知,您正在尝试使用位置作为索引,但您使用的是变量 i。尝试将此函数中的 i 更改为位置。如果你可以发布你的堆栈跟踪,那也会有帮助。
推荐阅读
- javascript - 当我尝试将 google place 自动完成 API 与 Axios 一起使用时出现 CORS 错误
- javascript - 如何使用 node .js 将 html 的值表添加到 mysql
- c# - 如何将日期列表与实体中的数据库表连接起来?
- netsuite - 获取 Netsuite salesorder 记录中shipmethod 字段的文本
- docker - 在 ubuntu 16.04 上找不到 Dockerfile,dockerfile 存在
- javascript - eval code.js 这是什么?
- php - 将 CSV 值“数字”作为数字导入 mysql
- julia - 有条件地添加列
- powerbi - Power BI 中的一对多关系
- python - scipy sparse:获取两个矩阵中存在的值