Java 启动RecyclerView崩溃应用程序
我尝试构建的两个应用程序都存在此问题。当我启动RecyclerView时,应用程序崩溃了。我已经将我的适配器代码与多个源代码进行了比较,所以我认为问题不在这里。我无法确定到底是什么错了 这只是一个非常简单的清单。100行,每行带有数字、编辑文本、复选框和按钮 checklist.javaJava 启动RecyclerView崩溃应用程序,java,android,Java,Android,我尝试构建的两个应用程序都存在此问题。当我启动RecyclerView时,应用程序崩溃了。我已经将我的适配器代码与多个源代码进行了比较,所以我认为问题不在这里。我无法确定到底是什么错了 这只是一个非常简单的清单。100行,每行带有数字、编辑文本、复选框和按钮 checklist.java public class checkList extends AppCompatActivity { RecyclerView mRecyclerView; private RecyclerView.Adap
public class checkList extends AppCompatActivity {
RecyclerView mRecyclerView;
private RecyclerView.Adapter myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_check_list);
numbers[] mNumbers = new numbers[100];
mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);
for (int i = 0; i<mNumbers.length; i++) {
mNumbers[i].setInt(i + 1);
}
myAdapter = new myAdapter(mNumbers);
mRecyclerView.setAdapter(myAdapter);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
}
}
adapter.java
public class myAdapter extends RecyclerView.Adapter<myAdapter.ViewHolder> {
private numbers[] mNumbers;
public myAdapter (numbers[] numbers) {
mNumbers = numbers;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_slot, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.bindNumbers(mNumbers[position]);
}
@Override
public int getItemCount() {
return mNumbers.length;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
TextView numberText;
EditText checklistText;
Button deleteButton;
CheckBox checkDisBox;
public ViewHolder(View itemView) {
super(itemView);
numberText = (TextView) itemView.findViewById(R.id.number);
checklistText = (EditText) itemView.findViewById(R.id.editText);
deleteButton = (Button) itemView.findViewById(R.id.deleteButton);
checkDisBox = (CheckBox) itemView.findViewById(R.id.checkBox);
}
public void bindNumbers(numbers numbers) {
numberText.setText(numbers.getInt() + "");
}
}
}
公共类myAdapter扩展了RecyclerView.Adapter{
私人号码[]个;
公共myAdapter(编号[]编号){
mNumbers=数字;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext()).flate(R.layout.list_slot,parent,false);
视窗支架vh=新视窗支架(v);
返回vh;
}
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
持有人编号(编号[位置]);
}
@凌驾
public int getItemCount(){
返回mNumbers.length;
}
公共静态类ViewHolder扩展了RecyclerView.ViewHolder{
文本视图编号文本;
编辑文本检查列表文本;
按钮删除按钮;
复选框checkDisBox;
公共视图持有者(视图项视图){
超级(项目视图);
numberText=(TextView)itemView.findViewById(R.id.number);
checklistText=(EditText)itemView.findViewById(R.id.EditText);
deleteButton=(Button)itemView.findViewById(R.id.deleteButton);
checkDisBox=(复选框)itemView.findViewById(R.id.CheckBox);
}
公共编号(编号){
numberText.setText(numbers.getInt()+);
}
}
}
从logcat发布您的异常。问题在第27行。那是哪一行。另外,编辑您的问题以进行更新,而不是将更新作为答案发布。在清单类中:for(int i=0;i您已经对数组进行了尺寸标注,但是您需要为每个索引实例化一个
新数字()
对象。谢谢mike。我现在已经解决了它
public class myAdapter extends RecyclerView.Adapter<myAdapter.ViewHolder> {
private numbers[] mNumbers;
public myAdapter (numbers[] numbers) {
mNumbers = numbers;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_slot, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.bindNumbers(mNumbers[position]);
}
@Override
public int getItemCount() {
return mNumbers.length;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
TextView numberText;
EditText checklistText;
Button deleteButton;
CheckBox checkDisBox;
public ViewHolder(View itemView) {
super(itemView);
numberText = (TextView) itemView.findViewById(R.id.number);
checklistText = (EditText) itemView.findViewById(R.id.editText);
deleteButton = (Button) itemView.findViewById(R.id.deleteButton);
checkDisBox = (CheckBox) itemView.findViewById(R.id.checkBox);
}
public void bindNumbers(numbers numbers) {
numberText.setText(numbers.getInt() + "");
}
}
}