微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 ClickListener 添加到 RecyclerView 实时数据库

如何解决将 ClickListener 添加到 RecyclerView 实时数据库

我需要在我的项目中将 ClickListener 添加RecyclerView,但我不能。

我试了好几天都失败了:(

请帮帮我。

(变量为意大利语)

RecyclerView 类:

public class ListaNonConsegnate extends AppCompatActivity{
    private androidx.recyclerview.widget.RecyclerView recyclerView;
    EditText searchBox;

    DatabaseReference nonConsegnate;
    private ArrayList<dati> list;

    private String nomeUtente;

    private SwipeRefreshLayout swipeRefreshLayout;                                                             

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lista_non_consegnate);

        Bundle extras = getIntent().getExtras();
        nomeUtente = extras.getString("KEY_nomeUtente");         //variable from the prevIoUs activity                                    

        searchBox = findViewById(R.id.searchBox);         //for filtered list

        nonConsegnate = FirebaseDatabase.getInstance().getReference().child(nomeUtente + "/00-b-Non consegnate");    //path on the database

        recyclerView = findViewById(R.id.recyclerView);                                                  
        recyclerView.setHasFixedSize(true);                                                              
        recyclerView.setLayoutManager(new linearlayoutmanager(this));                           

        searchBox.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s,int start,int count,int after) {
            }

            @Override
            public void onTextChanged(CharSequence s,int before,int count) {
            }

            @Override
            public void afterTextChanged(Editable s) {
                ArrayList<dati> myList = new ArrayList<>();

            //add filter

                AdapterClass adapterClass = new AdapterClass(myList);
                recyclerView.setAdapter(adapterClass);
            }
        });


    }

    @Override
    protected void onStart() {
        super.onStart();
        if (nonConsegnate != null) {
            nonConsegnate.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot snapshot) {
                    if (snapshot.exists()) {
                        list = new ArrayList<>();
                        for (DataSnapshot ds : snapshot.getChildren()) {

                            list.add(ds.getValue(dati.class));

                        }
                        AdapterClass adapterClass = new AdapterClass(list);
                        recyclerView.setAdapter(adapterClass);


                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError error) {
                    Toast.makeText(ListaNonConsegnate.this,error.getMessage(),Toast.LENGTH_SHORT).show();
                }
            });
        }

    } 
}  

适配器类:

public class AdapterClass extends RecyclerView.Adapter<AdapterClass.MyViewHolder>{
    ArrayList<dati> list;           

    public AdapterClass(ArrayList<dati> list){
        this.list = list;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup,int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_items,viewGroup,false); 
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder,int position) {
        holder.bolla.setText(list.get(position).getDDT());                                           
    }

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


    public class MyViewHolder extends RecyclerView.ViewHolder{
        TextView bolla;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            bolla = itemView.findViewById(R.id.textViewBolla);

        }

    } 
}

(OnClick 必须通过传递“nomeUtente”和“DDT”变量来打开一个新活动)

谢谢。

(StackOverflow 告诉我需要添加更多细节,但没什么可说的,所以我写了无用的句子)lol

解决方法

1- 将此代码添加到您的活动中:

 public void onClickCalled() {
        // Your Code
    }

2- 在你的适配器中:

 holder.nomeUtente.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ((YourNewActivity) context).onClickCalled();
            }
        });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?