【问题标题】:Why my array value not working in recycler view为什么我的数组值在回收站视图中不起作用
【发布时间】:2020-06-19 05:49:56
【问题描述】:

我正在尝试在视图中附加数据。但我在 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);



        }
    }
}

【问题讨论】:

  • 分享日志猫
  • 究竟是什么错误?
  • 实际上输出不是数组类型....我想要这个列表中不同类型的东西...但是输出是一个列表中的相同对象

标签: java arrays android-studio android-recyclerview


【解决方案1】:
@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 更改为位置。如果你能发布你的堆栈跟踪,那也会有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多