【问题标题】:java.lang.NoSuchMethodException: <init> [class android.view.View] Firebase Recycler Adapterjava.lang.NoSuchMethodException: <init> [class android.view.View] Firebase Recycler Adapter
【发布时间】:2019-01-21 16:20:41
【问题描述】:

运行 RecyclerView UI 时出现错误

 @Override
public void onStart() {
    super.onStart();
final FirebaseRecyclerAdapter<request_recycle, requestViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<request_recycle, requestViewHolder>(request_recycle.class, R.layout.request_trip_layout, requestViewHolder.class, query_car) {
        @Override
        protected void populateViewHolder(final requestViewHolder viewHolder, final request_recycle model, int position) {
};

}

我收到此错误:

java.lang.RuntimeException: java.lang.NoSuchMethodException: <init> [class android.view.View]
    at com.firebase.ui.a.b.a(Unknown Source)
    at android.support.v7.widget.RecyclerView$a.b(Unknown Source)
    at android.support.v7.widget.RecyclerView$p.a(Unknown Source)
    at android.support.v7.widget.RecyclerView$p.a(Unknown Source)

依赖项是:

 implementation 'com.google.firebase:firebase-core:16.0.1'
 implementation 'com.google.firebase:firebase-database:16.0.1' 
 implementation 'com.google.firebase:firebase-auth:16.0.1' 
 implementation 'com.google.firebase:firebase-storage:16.0.1' 
 implementation 'com.google.firebase:firebase-messaging:17.0.0' 
 implementation 'com.firebaseui:firebase-ui-database:0.4.0' 
 implementation 'com.firebaseui:firebase-ui-auth:3.1.0' 

【问题讨论】:

  • 您使用的是哪个版本的 firebase 。使用 question 添加依赖项。请注意使用 java 命名约定...
  • 这是我的依赖实现 'com.google.firebase:firebase-core:16.0.1' 实现 'com.google.firebase:firebase-database:16.0.1' 实现 'com.google. firebase:firebase-auth:16.0.1' 实施 'com.google.firebase:firebase-storage:16.0.1' 实施 'com.google.firebase:firebase-messaging:17.0.0' 实施 'com.firebaseui:firebase- ui-database:0.4.0' 实现 'com.firebaseui:firebase-ui-auth:3.1.0'
  • 试试This。如果问题没有解决,请在问题中添加相关代码。
  • 先生,我的数据持有者 public static class requestViewHolder extends RecyclerView.ViewHolder{ View mview; MediaPlayer 播放器; public requestViewHolder(final View itemView){ super(itemView); mview=项目视图; }
  • 它已经在静态中了

标签: android firebase


【解决方案1】:

firebaseUI 依赖项更新为以下内容:

implementation 'com.firebaseui:firebase-ui-database:4.1.0'
implementation 'com.firebaseui:firebase-ui-auth:4.1.0'

因此它们与您正在使用的 firebase 库兼容,因为它可能会导致问题。

然后使用以下代码:

 FirebaseRecyclerOptions<request_recycle> options =
            new FirebaseRecyclerOptions.Builder<Chat>()
                    .setQuery(query_car, request_recycle.class)
                    .build();

FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<request_recycle, requestViewHolder>(options) {
@Override
public ChatHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    // Create a new instance of the ViewHolder, in this case we are using a custom
    // layout called R.layout.message for each item
    View view = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.request_trip_layout, parent, false);

    return new ChatHolder(view);
}

@Override
protected void onBindViewHolder(ChatHolder holder, int position, Chat model) {
    // Bind the Chat object to the ChatHolder
    // ...
    }
 };

不要忘记阅读docs,并检查:

https://github.com/firebase/FirebaseUI-Android/blob/version-4.1.0/database/README.md#firebaserecycleradapter-lifecycle

您需要使用adapter.startListening();,这样数据才能出现在recyclerview中。

【讨论】:

    猜你喜欢
    • 2017-06-15
    • 1970-01-01
    • 2022-06-30
    • 2020-10-16
    • 2021-02-16
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    相关资源
    最近更新 更多