[英]RecyclerView android
当我打开应用程序时它不起作用为什么?
为什么这个RecyclerView
不起作用,但我不知道为什么
package com.example.dell.iwantto;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;
public class NameAdapter extends RecyclerView.Adapter<NameAdapter.NameViewHolder> {
private ArrayList<String> mData;
public static class NameViewHolder extends RecyclerView.ViewHolder {
public TextView mNameTextView;
public NameViewHolder(TextView v) {
super(v);
mNameTextView = v;
}
}
public NameAdapter(ArrayList<String> mData) {
this.mData = mData;
}
@Override
public NameAdapter.NameViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
TextView v = (TextView) LayoutInflater.from(parent.getContext())
.inflate(R.layout.layout,parent, false).findViewById(R.id.xs);
NameViewHolder vh = new NameViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(NameViewHolder holder, int position) {
holder.mNameTextView.setText(mData.get(position));
}
@Override
public int getItemCount() {
return mData.size();
}
}
我该如何解决? 错误是什么? 当我试图在手机中打开它时,为什么应用程序停止?
您的RecyclerView
无法工作,因为您错误地将子视图作为父视图提供给以下代码中的ViewHolder
所需:
@Override
public NameAdapter.NameViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// This is incorrect because the method need a parent view not a child view
TextView v = (TextView) LayoutInflater.from(parent.getContext())
.inflate(R.layout.layout,parent, false).findViewById(R.id.xs);
NameViewHolder vh = new NameViewHolder(v);
return vh;
}
它应该是这样的:
@Override
public NameAdapter.NameViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Context context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
// inflate your layout.
View view = inflater.inflate(R.layout.layout, parent, false);
NameViewHolder viewHolder = new NameViewHolder(view);
return viewHolder;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.