【问题标题】:Array Type expected found on onBindViewHolder?在 onBindViewHolder 上找到预期的数组类型?
【发布时间】:2015-02-10 06:23:23
【问题描述】:

我正在尝试使用 RecyclerView 显示一个左侧有图像,右侧有标题的列表。

通过for 循环,我在一个ArrayList 中添加了标题和图像

String[] mtitles = {"Title","Title","Title","Title","Title","Title","Title","Title","Title","Title"};
int[] mimages = {R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher};

 List<Feed> items = new ArrayList<Feed>();
    Feed feed = new Feed();
    for (int i=0;i<mtitles.length;i++)

    {
        feed.setImage(mimages[i]);
        feed.setTitle(mtitles[i]);
        items.add(feed);
    }

    adapter = new MyAdapter(items);

这是我的 Feed.class

public class Feed {

    String title;
    int image;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public int getImage() {
        return image;
    }

    public void setImage(int image) {
        this.image = image;
    }
}

MyAdapter.class

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

    public List<Feed> items;

    public static class ViewHolder extends RecyclerView.ViewHolder
    {
        public ImageView icon;
        public TextView title;

        public ViewHolder(View v)
        {
            super(v);
            icon = (ImageView)v.findViewById(R.id.imageView);
            title = (TextView)v.findViewById(R.id.textView);


        }

    }


    public MyAdapter(List<Feed> items)
    {
        this.items=items;
    }

    @Override
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_layout,parent,false);
        ViewHolder vh = new ViewHolder(v);
        return vh;

    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {

        holder.icon.setImageResource(items[position]); // Problem here

    }



    @Override
    public int getItemCount() {
        return items.size();
    }
}

在这条线上,

 holder.icon.setImageResource(items[position]);

我遇到了错误。

 Array type expected;found.

截图:

【问题讨论】:

  • 真的是这么说的吗?
  • 查看我的问题。我更新了截图。
  • 如果错误是Array type expected; found: 'java.util.List&lt;com.example.yuvaraj.myapplication.Feed&gt;,你为什么说你的错误是Array type expected; found.? (在这里真的很好奇你的思考过程)

标签: java android android-recyclerview


【解决方案1】:

使用

holder.icon.setImageResource(items.get(position).getImage());

因为itemsListFeed 类对象,而不是Array

【讨论】:

  • 谢谢,它显示了列表。但是,它将最后一个标题和图像应用于整个列表。我的意思是,它为所有行显示Title one 文本,而不是单独的文本。
  • @user3289108: 好的,将Feed feed = new Feed(); 行移到for loop 内。可能它会工作..:)
  • @ρяσѕρєяK 同样的问题stackoverflow.com/questions/31355629/…
【解决方案2】:

[] 索引符号仅适用于数组。 Lists 有一个get 方法:items.get(position)

【讨论】:

  • 谢谢,我知道了。
【解决方案3】:

进行如下编辑:

public void onBindViewHolder(ViewHolder holder, int position) {

            tempValue=null; // this is an object of Feed class
            tempValue = ( Feed ) items.get( position );

    holder.icon.setImageResource(tempValue.getImage()); // try thishere

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 2012-03-25
    • 2020-10-13
    • 1970-01-01
    相关资源
    最近更新 更多