android FirebaseRecyclerAdapter单击项目不工作
我在我的android项目中显示了Firebase数据库中的一些数据,但当我点击该项目时,没有任何触发,我的意思是点击无效 这是我的活动android FirebaseRecyclerAdapter单击项目不工作,android,firebase,firebase-realtime-database,firebaseui,Android,Firebase,Firebase Realtime Database,Firebaseui,我在我的android项目中显示了Firebase数据库中的一些数据,但当我点击该项目时,没有任何触发,我的意思是点击无效 这是我的活动 public class Notification extends AppCompatActivity { private RecyclerView mPeopleRV; private DatabaseReference mDatabase; private FirebaseRecyclerAdapter<News, Notif
public class Notification extends AppCompatActivity {
private RecyclerView mPeopleRV;
private DatabaseReference mDatabase;
private FirebaseRecyclerAdapter<News, Notification.NewsViewHolder> mPeopleRVAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mDatabase = FirebaseDatabase.getInstance().getReference().child("XXXXXXXXXXX");
mDatabase.keepSynced(true);
mPeopleRV = (RecyclerView) findViewById(R.id.myRecycleView);
DatabaseReference personsRef = FirebaseDatabase.getInstance().getReference().child("XXXXXXXXXXX");
Query personsQuery = personsRef.orderByChild("date");
mPeopleRV.hasFixedSize();
LinearLayoutManager mLayoutManager = new LinearLayoutManager(Notification.this);
mLayoutManager.setReverseLayout(true);
mLayoutManager.setStackFromEnd(true);
mPeopleRV.setLayoutManager(mLayoutManager);
FirebaseRecyclerOptions personsOptions = new FirebaseRecyclerOptions.Builder<News>().setQuery(personsQuery, News.class).build();
mPeopleRVAdapter = new FirebaseRecyclerAdapter<News, NewsViewHolder>(personsOptions) {
@Override
protected void onBindViewHolder(Notification.NewsViewHolder holder, final int position, final News model) {
holder.setTitle(capitalize(model.getName()));
//this click is not working
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String pos = mPeopleRVAdapter.getRef(position).getKey();
Toast.makeText(getApplicationContext(), "dsdsdsd", Toast.LENGTH_SHORT).show();
}
});
}
};
mPeopleRV.setAdapter(mPeopleRVAdapter);
}
@Override
public void onStart() {
super.onStart();
mPeopleRVAdapter.startListening();
}
@Override
public void onStop() {
super.onStop();
mPeopleRVAdapter.stopListening();
}
public static class NewsViewHolder extends RecyclerView.ViewHolder {
View mView;
public NewsViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setTitle(String title) {
String output = title.substring(0, 1).toUpperCase() + title.substring(1);
TextView post_title = (TextView) mView.findViewById(R.id.post_title);
post_title.setText(output);
}
}
}
公共类通知扩展了AppCompative活动{
私人回收站;
私有数据库参考数据库;
专用FirebaseRecyclerAdapter mPeopleRVAdapter;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mDatabase=FirebaseDatabase.getInstance().getReference().child(“xxxxxxxxxx”);
mDatabase.keepSynced(true);
mPeopleRV=(RecycleView)findViewById(R.id.myRecycleView);
DatabaseReference personsRef=FirebaseDatabase.getInstance().getReference().child(“xxxxxxxxxx”);
Query personsQuery=personsRef.orderByChild(“日期”);
mPeopleRV.hasFixedSize();
LinearLayoutManager mllayoutmanager=新的LinearLayoutManager(Notification.this);
mLayoutManager.setReverseLayout(true);
mLayoutManager.setStackFromEnd(true);
mPeopleRV.setLayoutManager(mllayoutmanager);
FirebaseRecyclerOptions personOptions=新建FirebaseRecyclerOptions.Builder().setQuery(personQuery,News.class).build();
mPeopleRVAdapter=新的FirebaseRecyclerAdapter(PersonOptions){
@凌驾
受保护的无效onBindViewHolder(Notification.NewsViewHolder,最终整型位置,最终新闻模型){
holder.setTitle(大写(model.getName());
//此单击无效
holder.mView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串pos=mPeopleRVAdapter.getRef(位置).getKey();
Toast.makeText(getApplicationContext(),“dsd”,Toast.LENGTH\u SHORT.show();
}
});
}
};
mPeopleRV.setAdapter(mPeopleRVAdapter);
}
@凌驾
public void onStart(){
super.onStart();
mPeopleRVAdapter.startListening();
}
@凌驾
公共void onStop(){
super.onStop();
mPeopleRVAdapter.stopListening();
}
公共静态类NewsViewHolder扩展了RecyclerView.ViewHolder{
视图视图;
公共新闻视图持有者(查看项目视图){
超级(项目视图);
mView=项目视图;
}
公共无效集合标题(字符串标题){
字符串输出=title.substring(0,1).toUpperCase()+title.substring(1);
TextView post_title=(TextView)mView.findViewById(R.id.post_title);
post_title.setText(输出);
}
}
}
上面的代码有什么问题我找不到,我正试图在过去4,5个小时内解决这个问题,我还需要该firebase子对象的键,当单击该项目时我已经检查了一些示例代码,我认为您缺少创建onCreateViewHolder方法将项目布局添加到适配器 代码:
DatabaseReference personsRef = FirebaseDatabase.getInstance().getReference().child("XXXXXXXXXXX");
FirebaseRecyclerOptions personsOptions = new FirebaseRecyclerOptions.Builder<News>().setQuery(personsQuery, News.class).build();
mPeopleRVAdapter = new FirebaseRecyclerAdapter<News, NewsViewHolder>(personsOptions) {
//I think you are missing this part.
@Override
public NewsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_message, parent, false);
return new NewsViewHolder(view);
}
@Override
protected void onBindViewHolder(Notification.NewsViewHolder holder, final int position, final News model) {
holder.setTitle(capitalize(model.getName()));
//this click is not working
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String pos = mPeopleRVAdapter.getRef(position).getKey();
Toast.makeText(getApplicationContext(), "dsdsdsd", Toast.LENGTH_SHORT).show();
}
});
}
};
DatabaseReference personsRef=FirebaseDatabase.getInstance().getReference().child(“xxxxxxxxxx”);
FirebaseRecyclerOptions personOptions=新建FirebaseRecyclerOptions.Builder().setQuery(personQuery,News.class).build();
mPeopleRVAdapter=新的FirebaseRecyclerAdapter(PersonOptions){
//我想你错过了这一部分。
@凌驾
public NewsViewHolder onCreateViewHolder(视图组父级,int-viewType){
View=LayoutInflater.from(parent.getContext())
.充气(R.layout.item_消息,父项,错误);
返回新的新闻视图持有者(视图);
}
@凌驾
受保护的无效onBindViewHolder(Notification.NewsViewHolder,最终整型位置,最终新闻模型){
holder.setTitle(大写(model.getName());
//此单击无效
holder.mView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串pos=mPeopleRVAdapter.getRef(位置).getKey();
Toast.makeText(getApplicationContext(),“dsd”,Toast.LENGTH\u SHORT.show();
}
});
}
};
我希望它能帮助您。你好,山姆。请看一下这个问题,也许该代码可以帮助您。我已经看到,实际上我是android新手,我找不到缺少的东西,所以你能告诉我我需要在代码中做什么更改才能像我期望的那样工作吗?如果你感兴趣,建议您使用
FirebaseRecyclerAdapter
“item\u message”从Firebase实时数据库检索数据,并将其显示在RecyclerView
中。这是什么?任何id或布局?item message是表示项目的布局,您需要创建一个包含要显示内容的布局。在你的情况下,你需要一个带有帖子标题的版面我有这个版面,当我将版面的名称替换为“item_message”时,出现了另一个错误>onCreateViewHolder(ViewGroup,int)”已经在“源自com.firebase.ui.database.firebaseRecyclerAdapter的匿名类”中定义,我无法在我的计算机上回复整个代码,看看这个解决方案:您的代码需求看起来很相似