当前位置: 首页 > 知识库问答 >
问题:

对空对象引用的RecyclView

魏安然
2023-03-14

因此,我试图从firebase向recyclerview显示图像,但它抛出了一个错误。错误提示E/nite competitive:[qarth _ debug:]get patch store::createDisableExceptionQarthFile方法失败。E/AndroidRuntime:致命异常:主进程:com . example . fortnite competitive,PID:15205 Java . lang . nullpointerexception:尝试在com . Google . firebase . database . core . valueeventregistration . fire event的空对象引用上调用虚拟方法“void Android x . recycle view . widget . recycle view . set Adapter(androidx . recycle view . widget . recycle view$Adapter)”我将非常感谢帮助。

public class NewsActivity extends AppCompatActivity {
FirebaseDatabase mDatabase;
DatabaseReference mRef;
FirebaseStorage mStorage;
RecyclerView recyclerView;
List<Post> postList;
private RecyclerView mRecyclerView;
private ImageAdapter mAdapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_news);
        
        getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
        getSupportActionBar().setCustomView(R.layout.action_bar);

        mDatabase = FirebaseDatabase.getInstance();
        mRef = FirebaseDatabase.getInstance().getReference("Posts");
        mStorage = FirebaseStorage.getInstance();
        recyclerView = findViewById(R.id.recycler_news);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

        postList = new ArrayList<>();

        mRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                for (DataSnapshot postSnapshot : snapshot.getChildren()){
                    Post post = postSnapshot.getValue(Post.class);
                    postList.add(post);
                }
                mAdapter = new ImageAdapter(NewsActivity.this, postList);

                mRecyclerView.setAdapter(mAdapter);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {
            }
        });



    }
}

适配器

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.squareup.picasso.Picasso;

import java.util.List;

public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder> {
    private Context mContext;
    private List<Post> mUploads;

    public ImageAdapter(Context context, List<Post> uploads){
        mContext = context;
        mUploads = uploads;
    }

    @NonNull
    @Override
    public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(mContext).inflate(R.layout.news_row,parent,false);
        return  new ImageViewHolder(v);
    }

    @Override
    public void onBindViewHolder(@NonNull ImageAdapter.ImageViewHolder holder, int position) {
        Post post = mUploads.get(position);
        holder.textViewName.setText(post.getmTitle());
        Picasso.get().load(post.getmImage()).fit().centerCrop().into(holder.imageView);
    }

    @Override
    public int getItemCount() {
        return mUploads.size();
    }

    public class ImageViewHolder extends  RecyclerView.ViewHolder{
        public TextView textViewName;
        public ImageView imageView;

        public ImageViewHolder (View itemView) {
            super (itemView);

            textViewName = itemView.findViewById(R.id.newsTitle);
            imageView = itemView.findViewById(R.id.newsImage);

        }

    }
}

职位类别

public class Post {

    public String mTitle;
    public String mImage;

    public Post(){

    }
    public Post(String mTitle, String mImage){
        this.mTitle = mTitle;
        this.mImage = mImage;
    }

    public String getmImage(){
        return mImage;

    }
    public String getmTitle() {
        return mTitle;
    }
}

共有1个答案

宰父淳
2023-03-14

在您活动中有两个回收器视图实例。

    RecyclerView recyclerView;
    private RecyclerView mRecyclerView;//remove this line and set adapter for above recyclerView instance

    recyclerView.setAdapter(mAdapter);
 类似资料:
  • 问题内容: 我不知道我的代码有什么问题 这是我的片段课 这是我的SessionManager.java 运行项目时出现的错误: java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“ void com.example.gandi.symanlub.SessionManager.logoutUser()” 问题答案: 您收到错误消息是因为在此行您正在调用: 会

  • 我有一个计时器在第二个活动中。我想从main activity访问它,所以我将chronometer作为public static放在第二个activity中,并将“secondactivity.chronometer”放在main activity中,但是当启动应用程序时,它在空对象引用上显示,我已经检查了xml id是否正确。有人知道怎么解决这个问题吗?

  • 我在使用recycler视图启动活动时出错,因此我有3个文件java类、一个适配器和要执行的活动。 java类只是一个具有3个变量的简单对象 回收器视图的适配器 以及活动 我得到的错误是: 我在一个空项目上做了同样的配置,一切看起来都是正确的,

  • 我正在尝试使用Reform2调用API获取数据。当我打开应用程序时,它会立即崩溃。我尝试了很多解决方案。我使用postman,但仍然可以看到所有数据都是json格式的。有人能帮我吗?非常感谢你 这是我的日志 ApiClient公司 } aip调用接口 这里是我的家片段。

  • 问题内容: 是否有可能在Java中获得对对象的所有引用。 我需要检查的是对象是否删除了所有的回调订阅。 谢谢 问题答案: 这可以通过JVMTI实现,并且通常由堆分析器完成。但是,它不能在Java内部完成。

  • 问题内容: 我是Java的新手。我说,我有一个类 人 。我要列印 上面的代码给出如下输出: 这有什么意义? 该对象是否具有某种唯一标识? 我可以自定义吗?我的意思是编写自己的函数,该函数在打印时会输出? 如果是这样,我该怎么做? 问题答案: 如果要打印任何对象的有意义的内容,则必须实现自己的方法,该方法将覆盖parent()类的方法。默认情况下,所有类(无论您创建什么)都扩展类。 样例代码: 输出