Android RecyclerView空指针异常。尝试在空对象引用上调用虚拟方法RecyclerView.setLayoutManager
我认为问题在于其中一个RecyclerView transactions\u list\u view对象未包含在activity\u main.xml中,而是嵌套在另一个RecyclerView groups\u list\u视图中。这两个都包括在下面 错误: 03-22:04:51.433 15921-15921/com.example.android.myapplication E/AndroidRuntime:FATAL EXCEPTION:main 进程:com.example.android.myapplication,PID:15921 java.lang.RuntimeException:无法启动活动组件信息{com.example.android.myapplication/com.example.android.myapplication.MainActivity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.support.v7.widget.RecyclerView.setLayoutManagerandroid.support.v7.widget.RecyclerView$LayoutManager” 在android.app.ActivityThread.PerformLaunchActivityActivityRead.java:2442 在android.app.ActivityThread.handleLaunchActivityActivityRead.java:2502 访问$900ActivityThread.java:167 在android.app.ActivityThread$H.handleMessageActivityThread.java:1361 位于android.os.Handler.dispatchMessageHandler.java:102 在android.os.Looper.Looper.java:148 在android.app.ActivityThread.mainActivityThread.java:5469 在java.lang.reflect.Method.Invokenactive方法中 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.runZygoteInit.java:770 位于com.android.internal.os.ZygoteInit.mainZygoteInit.java:660 原因:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“void android.support.v7.widget.RecyclerView.setLayoutManagerandroid.support.v7.widget.RecyclerView$LayoutManager” 位于com.example.android.myapplication.MainActivity.onCreateMainActivity.java:37 在android.app.Activity.performCreateActivity.java:6553 在android.app.Instrumentation.callActivityOnCreateInstrumentation.java:1108 在android.app.ActivityThread.PerformLaunchActivityActivityRead.java:2395 在android.app.ActivityThread.handleLaunchActivityActivityRead.java:2502 访问$900ActivityThread.java:167 在android.app.ActivityThread$H.handleMessageActivityThread.java:1361 位于android.os.Handler.dispatchMessageHandler.java:102 在android.os.Looper.Looper.java:148 在android.app.ActivityThread.mainActivityThread.java:5469 在java.lang.reflect.Method.Invokenactive方法中 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.runZygoteInit.java:770 位于com.android.internal.os.ZygoteInit.mainZygoteInit.java:660 迈 nActivity.java activity_main.xml TransactionListAdapter.java groups\u list\u item.xml 事务\u列表\u item.xmlAndroid RecyclerView空指针异常。尝试在空对象引用上调用虚拟方法RecyclerView.setLayoutManager,android,android-layout,android-recyclerview,android-adapter,Android,Android Layout,Android Recyclerview,Android Adapter,我认为问题在于其中一个RecyclerView transactions\u list\u view对象未包含在activity\u main.xml中,而是嵌套在另一个RecyclerView groups\u list\u视图中。这两个都包括在下面 错误: 03-22:04:51.433 15921-15921/com.example.android.myapplication E/AndroidRuntime:FATAL EXCEPTION:main 进程:com.example.andr
在activity\u main.xml文件中没有id事务\u列表\u视图-
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<android.support.v7.widget.RecyclerView
android:id="@+id/all_groups_list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.RecyclerView>
<android.support.v7.widget.RecyclerView
android:id="@+id/transactions_list_view"
android:layout_marginTop="20dp"
android:layout_below="@+id/all_groups_list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.RecyclerView>
</RelativeLayout>
是的,我知道这将工作,但这不是我想显示它的方式。我想在另一个布局文件中创建一个RecyclerView。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.android.myapplication.MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/all_groups_list_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
</FrameLayout>
package com.example.android.myapplication;
import android.content.Context;
import android.database.Cursor;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.android.myapplication.data.GroupsContract;
import com.example.android.myapplication.data.TransactionsContract;
/**
* Created by max on 3/22/2017.
*/
public class TransactionsListAdapter extends RecyclerView.Adapter<TransactionsListAdapter.TransactionsViewHolder> {
private Context mContext;
private Cursor mCursor;
public TransactionsListAdapter(Context context, Cursor cursor) {
this.mContext = context;
this.mCursor = cursor;
}
@Override
public TransactionsListAdapter.TransactionsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(mContext);
View view = inflater.inflate(R.layout.transactions_list_item, parent, false);
return new TransactionsViewHolder(view);
}
@Override
public void onBindViewHolder(TransactionsListAdapter.TransactionsViewHolder holder, int position) {
if(!mCursor.moveToPosition(position))
return;
String transactionName = mCursor.getString(mCursor.getColumnIndex(TransactionsContract.TransactionsEntry.COLUMN_NAME));
String transactionAmount = mCursor.getString(mCursor.getColumnIndex(TransactionsContract.TransactionsEntry.COLUMN_AMOUNT));
String transactiongivenortaken = mCursor.getString(mCursor.getColumnIndex(TransactionsContract.TransactionsEntry.COLUMN_GIVEN_TAKEN));
holder.transactionNameTextView.setText(transactionName);
holder.transactionAmountTextView.setText(transactionAmount);
holder.transactionGivenortakenTextView.setText(transactiongivenortaken);
}
@Override
public int getItemCount() {
return mCursor.getCount();
}
class TransactionsViewHolder extends RecyclerView.ViewHolder{
TextView transactionNameTextView;
TextView transactionAmountTextView;
TextView transactionGivenortakenTextView;
public TransactionsViewHolder(View itemView){
super(itemView);
transactionNameTextView = (TextView) itemView.findViewById(R.id.transactions_list_name);
transactionAmountTextView = (TextView) itemView.findViewById(R.id.transactions_list_amount);
transactionGivenortakenTextView = (TextView) itemView.findViewById(R.id.transactions_list_givenortaken);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_margin="16dp"
android:background="#fff"
android:elevation="4dp">
<TextView
android:id="@+id/group_name_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="3sp"
android:text="Group_Name"
android:textSize="20sp" />
<TextView
android:id="@+id/group_type_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Group_Type"
android:textSize="20sp"
android:layout_margin="3sp"
android:layout_alignBaseline="@id/group_name_text_view"
android:layout_alignBottom="@+id/view"
android:layout_alignParentEnd="true"
android:textColor="@color/secondary_text"/>
<View
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginLeft="2sp"
android:layout_marginRight="2sp"
android:background="@color/divider"
android:layout_alignBottom="@+id/group_name_text_view"/>
<android.support.v7.widget.RecyclerView
android:id="@+id/transactions_list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignTop="@+id/view">
</android.support.v7.widget.RecyclerView>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="3sp">
<TextView
android:id="@+id/transactions_list_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10sp"/>
<TextView
android:id="@+id/transactions_list_amount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10sp"/>
<TextView
android:id="@+id/transactions_list_givenortaken"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10sp"/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<android.support.v7.widget.RecyclerView
android:id="@+id/all_groups_list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.RecyclerView>
<android.support.v7.widget.RecyclerView
android:id="@+id/transactions_list_view"
android:layout_marginTop="20dp"
android:layout_below="@+id/all_groups_list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.RecyclerView>
</RelativeLayout>