【问题标题】:Add button to FirebaseUI ViewHolder将按钮添加到 FirebaseUI ViewHolder
【发布时间】:2018-02-15 13:32:45
【问题描述】:

我正在使用 firebase 上的数据库进行回收器视图。这工作得很好......现在我想实现一个共享按钮,但我不能让按钮引用每个 img。我找到了一个教程,但是当我尝试实现这一行时(如果我删除它,应用程序运行良好,但不引用按钮位置)

public BlogViewHolder(View itemView) {    
          ...
           button = (Button)mView.findViewById(R.id.share);
               ...

当我打开活动时应用程序崩溃 我只使用 toast 进行测试。

public class NoticiasActivity extends AppCompatActivity {

    private RecyclerView mBlogList;
    FirebaseDatabase database;
    DatabaseReference myRef;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_noticias);

        //Recycler View
        mBlogList = (RecyclerView)findViewById(R.id.blog_list);
        mBlogList.setHasFixedSize(true);
        mBlogList.setLayoutManager(new LinearLayoutManager(this));

        // Send a Query to the database
        database = FirebaseDatabase.getInstance();
        myRef = database.getReference("Data");
    }

    @Override
    protected void onStart() {
        super.onStart();

        FirebaseRecyclerAdapter<ModelClass, BlogViewHolder> firebaseRecyclerAdapter =
                new FirebaseRecyclerAdapter<ModelClass, BlogViewHolder>(
                        ModelClass.class,
                        R.layout.design_row,
                        BlogViewHolder.class,
                        myRef)  {



                    @Override
                    protected void populateViewHolder(BlogViewHolder viewHolder, ModelClass model,int position) {
                        viewHolder.setTitle(model.getTitle());
                        viewHolder.setImage(getApplicationContext(), model.getImage());
                        viewHolder.button.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                Toast.makeText(view.getContext(), "esto es un boton"+ view.getNextFocusUpId(), Toast.LENGTH_SHORT).show();

                            }
                        });
                    }
                };
        mBlogList.setAdapter(firebaseRecyclerAdapter);
    }
    //View Holder For Recycler View
    public static class BlogViewHolder extends RecyclerView.ViewHolder  {
        View mView;
        Button button ;

        public BlogViewHolder(View itemView) {

            super(itemView);
           button = (Button)mView.findViewById(R.id.share);





            mView= itemView;

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // click en la imagen hace algo
                    //añadir luego
                    Toast.makeText(v.getContext(), "hola", Toast.LENGTH_SHORT).show();

                }
            });

        }
        public void setTitle(String title){
            TextView post_title = (TextView)mView.findViewById(R.id.titleText);
            post_title.setText(title);
        }
        public void setImage(Context ctx , String image){
            ImageView post_image = (ImageView)mView.findViewById(R.id.imageViewy);
            // We Need TO pass Context
            Picasso.with(ctx).load(image).into(post_image);
        }    
    }
}

【问题讨论】:

标签: android firebase firebase-realtime-database android-recyclerview firebaseui


【解决方案1】:

你需要切换这些行

button = (Button)mView.findViewById(R.id.share);
mView= itemView;

或者从itemView中找到按钮

【讨论】:

  • 它的工作原理,你能解释一下为什么会导致崩溃吗?
  • 它会告诉你是否阅读了 Logcat。这是一个 NullPointerException。 Java 中最常见的异常。
  • 由于这篇文章已经回答了你的问题,你可以使用文章旁边的复选标记将其标记为已接受
猜你喜欢
  • 2017-04-09
  • 2017-08-15
  • 2018-06-13
  • 2013-03-07
  • 2014-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多