【发布时间】:2019-06-15 12:44:54
【问题描述】:
我正在尝试在 recyclerView 中显示数据,但我的应用崩溃了
公共类 Search_book_admin 扩展 AppCompatActivity {
ArrayList<Model_class> modelClassArrayList;
myAdapert myadapter;
RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
recyclerView = (RecyclerView) findViewById(R.id.rv);
setContentView(R.layout.activity_search_book_admin);
modelClassArrayList = new ArrayList<>();
AddItems();
myadapter = new myAdapert(modelClassArrayList);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(myadapter);
}
private void AddItems()
{
try {
for(int i=0;i<20;i++)
{
modelClassArrayList.add(new Model_class(R.drawable.ic_action_name,
"name: "+i,
"email"+i));
}
}
catch (Exception e)
{
Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onBackPressed() {
finish();
}
((我的适配器类))
公共类 myAdapert 扩展 RecyclerView.Adapter { ArrayList modelClassArrayList;
public myAdapert(ArrayList<Model_class> modelClassArrayList) {
this.modelClassArrayList = modelClassArrayList;
}
@NonNull
@Override
public myViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View customView = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.custom_row,viewGroup,false);
myViewHolder myviewHolder = new myViewHolder(customView);
return myviewHolder;
}
@Override
public void onBindViewHolder(@NonNull myViewHolder myViewHolder, int i) {
Model_class model_class = modelClassArrayList.get(i);
myViewHolder.contactPic.setImageResource(model_class.getImage());
myViewHolder.contactName.setText(model_class.getName());
myViewHolder.contectEmail.setText(model_class.getEmail());
}
@Override
public int getItemCount() {
return modelClassArrayList.size();
}
public class myViewHolder extends RecyclerView.ViewHolder {
ImageView contactPic;
TextView contactName,contectEmail;
public myViewHolder(@NonNull View itemView) {
super(itemView);
contactPic = itemView.findViewById(R.id.image);
contactName = itemView.findViewById(R.id.name);
contectEmail = itemView.findViewById(R.id.email);
}
}
2019-06-15 17:39:16.114 6337-6337/? E/ProActivieLaunch:发送广播 2019-06-15 17:39:16.121 4466-4702/? E/ActivityManager:收到 TouchDown 意图,开始 ActiveLaunch 2019-06-15 17:39:16.139 29048-29048/? E/Zygote: isWhitelistProcess - 进程被列入白名单 2019-06-15 17:39:16.140 29048-29048/? E/Zygote:访问信息:1 2019-06-15 17:39:16.563 4010-4053/? E/BufferQueueProducer:[com.sec.android.app.launcher/com.sec.android.app.launcher.activities.LauncherActivity[6337]#0] 断开连接:未连接(req=1) 2019-06-15 17:39:16.566 4466-6303/? E/WindowManager: win=Window{cdfa8e6 u0 com.sec.android.app.launcher/com.sec.android.app.launcher.activities.LauncherActivity} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win .mViewVisibility=8 caller=com.android.server.wm.WindowManagerService.tryStartExitingAnimation:2748 com.android.server.wm.WindowManagerService.relayoutWindow:2446 com.android.server.wm.Session.relayoutForTranslate:287 android.view.IWindowSession $Stub.onTransact:432 com.android.server.wm.Session.onTransact:186 android.os.Binder.execTransact:739 2019-06-15 17:39:17.376 4466-4537/? E/WindowManager: win=Window{7d266dd u0 启动画面 com.example.library_management_system EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true win.mViewVisibility=0 caller=com.android.server.wm.AppWindowToken .destroySurfaces:870 com.android.server.wm.AppWindowToken.destroySurfaces:851 com.android.server.wm.WindowState.onExitAnimationDone:5423 com.android.server.wm.WindowStateAnimator.onAnimationFinished:319 com.android.server.wm .WindowState.onAnimationFinished:5845 com.android.server.wm.-$$Lambda$yVRF8YoeNdTa8GR1wDStVsHu8xM.run:2 com.android.server.wm.SurfaceAnimator.lambda$getFinishedCallback$0:100 2019-06-15 17:39:19.682 29048-29048/com.example.library_management_system E/AndroidRuntime:致命异常:主要 进程:com.example.library_management_system,PID:29048 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.library_management_system/com.example.library_management_system.Search_book_admin}:java.lang.NullPointerException:尝试调用虚拟方法 'void android.support.v7.widget.RecyclerView。空对象引用上的 setHasFixedSize(boolean)' 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3115) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3258) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1955) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:214) 在 android.app.ActivityThread.main(ActivityThread.java:7058) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965) 原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.support.v7.widget.RecyclerView.setHasFixedSize(boolean)” 在 com.example.library_management_system.Search_book_admin.onCreate(Search_book_admin.java:25) 在 android.app.Activity.performCreate(Activity.java:7327) 在 android.app.Activity.performCreate(Activity.java:7318) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1275) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3095) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3258) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1955) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:214) 在 android.app.ActivityThread.main(ActivityThread.java:7058) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965) 2019-06-15 17:39:19.769 29101-29101/? E/Zygote: isWhitelistProcess - 进程被列入白名单
【问题讨论】:
-
你确定你的 recyclerview 初始化正确吗?你的布局是什么?
-
setContentView 应该在 findViewById 之前调用。
标签: android sqlite android-recyclerview