- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个回收 View 来显示 Android Studio Version3.5 中的图书列表。
当我尝试单击必须在回收 View 中显示图书列表的按钮时,我的应用程序崩溃了。
这是我的源代码:
1.AllBooksJava Activity
package com.example.mybooks;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.ArrayList;
public class AllBooksActivity extends AppCompatActivity {
private RecyclerView bookRecView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_books);
bookRecView = findViewById(R.id.my_recycler_view);
BooksRecViewAdapter adapter = new BooksRecViewAdapter(this);
bookRecView.setAdapter(adapter);
bookRecView.setLayoutManager(new LinearLayoutManager(this));
ArrayList<Book> books = new ArrayList<>();
books.add(new Book("muna madan", "Laxmi Parsad Devkota", 300, "", "muna madan novel"));
books.add(new Book("Palpasa Cafe", "Narayan Wagle", 300, "", "palpasa cafe"));
books.add(new Book("Summer Love", "Subin Bhattrai", 390, "", "summer love"));
//setting books to adapter
adapter.setBooks(books);
}
}
2.图书回收 View 适配器
package com.example.mybooks;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
public class BooksRecViewAdapter extends RecyclerView.Adapter<BooksRecViewAdapter.ViewHolder> {
private static final String TAG = "BooksRecViewAdapter";
//initialize book class
private ArrayList<Book> books = new ArrayList<>();
private Context context;
//contr for context
public BooksRecViewAdapter(Context context) {
this.context = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//ceating a view
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.listitem_book_rec_view, null);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
Log.d(TAG, "onBindViewHolder: called");
holder.bookName.setText(books.get(position).getName());
//click event
holder.bookName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, books.get(position).getName() + "selected ", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
return books.size();
}
//inner class
public class ViewHolder extends RecyclerView.ViewHolder {
//implement const to avoid error
private ImageView bookImage;
private TextView bookName;
public ViewHolder(@NonNull View itemView) {
super(itemView);
bookImage = itemView.findViewById(R.id.bookImage);
bookName = itemView.findViewById(R.id.bookName);
}
}
public void setBooks(ArrayList<Book> books) {
this.books = books;
notifyDataSetChanged();
}
}
3.读书课
private String name;
private String author;
private int pages;
private String imageUrl;
private String description;
public Book(String name,String author,int pages,String imageUrl,String description){
this.name=name;
this.author=author;
this.pages=pages;
this.imageUrl=imageUrl;
this.description=description;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public String getAuthor(){
return author;
}
public void setAuthor(String author){
this.author=author;
}
public int getPages(){
return pages;
}
public void setPages(int pages){
this.pages=pages;
}
public String getImageUrl(){
return imageUrl;
}
public void setImageUrl(String imageUrl){
this.imageUrl=imageUrl;
}
public String getDescription(){
return description;
}
public void setDescription(String description){
this.description=description;
}
@Override
public String toString(){
return"Book{"+
"name='"+name+'\''+
", author='"+author+'\''+
", pages="+pages+
", imageUrl='"+imageUrl+'\''+
", description='"+description+'\''+
'}';
}
4.书籍布局
<?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"
tools:context=".AllBooksActivity"
android:padding="20dp"
>
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
5.book自定义布局
<?xml version="1.0"encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
>
<ImageView
android:layout_width="140dp"
android:layout_height="140dp"
android:id="@+id/bookImage"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/bookName"
android:text="Book Name"
android:layout_below="@+id/bookImage"
android:layout_centerHorizontal="true"
android:textSize="14sp"
android:layout_marginTop="7dp"/>
</RelativeLayout>
2019-09-12 22:47:28.710 18954-18986/com.example.mybooks E/eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
2019-09-12 22:47:28.710 18954-18986/com.example.mybooks E/eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
2019-09-12 22:47:43.666 18954-18954/com.example.mybooks E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mybooks, PID: 18954
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mybooks/com.example.mybooks.AllBooksActivity}: android.view.InflateException: Binary XML file line #11: Binary XML file line #11: Error inflating class android.support.v7.widget.RecyclerView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: android.view.InflateException: Binary XML file line #11: Binary XML file line #11: Error inflating class android.support.v7.widget.RecyclerView
Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class android.support.v7.widget.RecyclerView
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.widget.RecyclerView" on path: DexPathList[[zip file "/data/app/com.example.mybooks-QSMXr1k2Y13cVZg37-7bvw==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.mybooks-QSMXr1k2Y13cVZg37-7bvw==/lib/x86, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.view.LayoutInflater.createView(LayoutInflater.java:606)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
at com.example.mybooks.AllBooksActivity.onCreate(AllBooksActivity.java:25)
at android.app.Activity.performCreate(Activity.java:7136)
at android.app.Activity.performCreate(Activity.java:7127)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
请帮帮我,我不知道哪里出了问题。我的应用程序被停止。
最佳答案
问题是您正在使用 androidx
RecyclerView
并在 xml
中从支持库实现 Recyclerview
使用这个:
androidx.recyclerview:recyclerview:"your code version"
而不是这个:
android.support.v7.widget.RecyclerView
关于java - 在 Android Studio 中实现 Recyclerview 时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57911294/
我经常使用 SSMS 查询数据和构建数据集,我的 IT 部门负责数据库管理。 最近我发现了 Azure Data Studio,我喜欢: 智能感知 源代码控制(例如使用 Git) 来自社区的扩展 SQ
我想根据我使用的 visual studio 版本编译不同的东西,比如 #if VISUAL_STUDIO_VERSION > 2015 eventH?.Invoke(this, EventArgs.
我们的开发团队计划从 visual studio 2005 升级到 visual studio 2010 -- 跳过 visual studio 2008。 大部分项目是VB ASP.NET项目,使用
我的Visual Studio 2015无法构建2010平台工具集。它说: The build tools for Visual Studio 2010 (v100) cannot be found.
我目前正在使用 Visual Studio 2015 来编程 ASP.NET Core 应用程序。我对安装 Visual Studio 2017 有以下疑问: 什么被认为是最佳实践和/或最干净的方法?
尝试从扩展和更新获取 Visual Studio 扩展时,出现以下错误:- 向 visualstudiogallery.msdn.microsoft.com/Services/VStudio/Exte
这个问题在这里已经有了答案: Can Visual Studio Code and VS 2012 be installed on same computer? (1 个回答) 关闭去年。 在安装了
作为标准安装的一部分,Visual Studio Code 带有一个名为“Monokai Dimmed”的颜色主题。 有没有办法将它移植到 Visual Studio 2015?我检查了社区主题( h
我想开始编程 CUDA。 我已经安装了 Visual Studio 2010 Express。 我还安装了 nVidia nSight Visual Studio。 而且我具备所有常见的先决条件(Ne
Visual Studio Community Edition是否可以使用Visual Studio Online帐户上的存储库? 我一直为包含在Online帐户中的Visual Studio Onl
我有一个我一直在开发的应用程序,但在 android studio 上遇到了问题。当我点击“build->run”然后选择我的设备时,应用程序永远不会在我的手机上运行(并且自动出现的android-s
我正在使用Visual Studio2010。我面临的一个问题是,当我创建一个新的Web项目时,Visual Studio将创建该项目,并且不会在解决方案资源管理器中显示其解决方案。 另一件事是,我想
我通读了这里的许多帖子,却找不到一个有效的明确答案。因此,在花了一些时间使它生效之后,我认为应该发布它。 问题:发布配置文件将建立在服务器上,但不会发布。 解: 确保已安装Microsoft Wind
我正在尝试使用Visual Studio 2012构建针对.NET 3.5的C++ CLI应用程序。 通过安装Visual Studio 2008,并指定v90平台工具集,我已经在一台机器上进行了这项
我在 Microsoft Visual Studios 2013 中有一个项目,我想在 Microsoft Visual Studios 2010 中打开它。有什么简单的方法吗?还是我必须在2010年
我想知道,如果我发送一个解决方案文件夹(它是用 visual studio C# 编写的),您可以在 visual studio for mac 中打开解决方案吗? 在visual studio 20
有没有办法在 Visual Studio Code 和 Visual Studio 中设置相同的快捷方式(而不必每次都手动更改它们)? 例如,我在 Visual Studio Code 中经常使用 A
我刚开始了解 Visual Studio Code。我想知道,我可以将 Visual Studio 替换为所有 .NET 开发相关的工作吗? 我可以节省 Visual Studio 许可的成本吗? V
我安装了具有有效许可证(Visual Studio 订阅)的 Visual Studio 2019 企业版(VS 2019 16.1.4),它运行良好。 突然之间,当我尝试打开项目或项目中的任何文件时
我一直在使用 Compass 编译 Windows 环境中的 sass 文件,无论是在命令行上还是使用 Compass-app 来查看目录。 我刚刚开始使用 Visual Studio(专业版 201
我是一名优秀的程序员,十分优秀!