Android RecyclerView没有预览
我正在尝试制作一个新闻应用程序、Firebase数据库和Recyclerview,向用户显示网站的新闻源,以及一个Android RecyclerView没有预览,android,firebase,android-layout,firebase-realtime-database,android-recyclerview,Android,Firebase,Android Layout,Firebase Realtime Database,Android Recyclerview,我正在尝试制作一个新闻应用程序、Firebase数据库和Recyclerview,向用户显示网站的新闻源,以及一个webview来查看网站。我已经将每个细节添加到了我的数据库中,但我的问题是它没有显示在我的主页中 这是主页课程: public class home extends AppCompatActivity implements PopupMenu.OnMenuItemClickListener { RecyclerView.LayoutManager layoutManager; p
webview
来查看网站。我已经将每个细节添加到了我的数据库中,但我的问题是它没有显示在我的主页中
这是主页
课程:
public class home extends AppCompatActivity implements PopupMenu.OnMenuItemClickListener {
RecyclerView.LayoutManager layoutManager;
private RecyclerView mPeopleRV;
SpotsDialog dialog;
DatabaseReference mDatabase;
SwipeRefreshLayout swipeLayout;
private FirebaseRecyclerAdapter<News, home.NewsViewHolder> mPeopleRVAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
mDatabase = FirebaseDatabase.getInstance().getReference().child("News");
mDatabase.keepSynced(true);
mPeopleRV = (RecyclerView) findViewById(R.id.news_home);
DatabaseReference personsRef = FirebaseDatabase.getInstance().getReference().child("News");
Query personsQuery = personsRef.orderByKey();
mPeopleRV.hasFixedSize();
mPeopleRV.setLayoutManager(new LinearLayoutManager(this));
FirebaseRecyclerOptions personsOptions = new FirebaseRecyclerOptions.Builder<News>().setQuery(personsQuery, News.class).build();
mPeopleRVAdapter = new FirebaseRecyclerAdapter<News, home.NewsViewHolder>(personsOptions) {
@Override
protected void onBindViewHolder(home.NewsViewHolder holder, final int position, final News model) {
holder.setNewsimage(getBaseContext(), model.getNewsimage());
holder.setTitle(model.getTitle());
holder.setNewssource(model.getNewssource());
holder.setDescription(model.getDescription());
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String url = model.getUrl();
Intent intent = new Intent(getApplicationContext(), newswebview.class);
intent.putExtra("id", url);
startActivity(intent);
}
});
}
@Override
public home.NewsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.news, parent, false);
return new home.NewsViewHolder(view);
}
};
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 setNewsimage(Context ctx, String image){
ImageView post_image = mView.findViewById(R.id.newsimage);
Picasso.with(ctx).load(image).into(post_image);
}
public void setTitle(String title){
TextView post_title = mView.findViewById(R.id.newsTitle);
post_title.setText(title);
}
public void setNewssource(String source){
TextView post_desc = mView.findViewById(R.id.newsSource);
post_desc.setText(source);
}
public void setDescription(String desc){
TextView post_desc = mView.findViewById(R.id.newsDesc);
post_desc.setText(desc);
}
}
@亚历克斯马莫,这是新的埃罗
E/AndroidRuntime: FATAL EXCEPTION: main
Process: app.ayodkay.com.ajudeme, PID: 27305
com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type app.ayodkay.com.ajudeme.classes.News
at com.google.firebase.database.obfuscated.zzbw.zzb(com.google.firebase:firebase-database@@16.0.2:2423)
at com.google.firebase.database.obfuscated.zzbw.zza(com.google.firebase:firebase-database@@16.0.2:79)
at com.google.firebase.database.DataSnapshot.getValue(com.google.firebase:firebase-database@@16.0.2:214)
at com.firebase.ui.database.ClassSnapshotParser.parseSnapshot(ClassSnapshotParser.java:29)
at com.firebase.ui.database.ClassSnapshotParser.parseSnapshot(ClassSnapshotParser.java:15)
at com.firebase.ui.common.BaseCachingSnapshotParser.parseSnapshot(BaseCachingSnapshotParser.java:35)
at com.firebase.ui.common.BaseObservableSnapshotArray.get(BaseObservableSnapshotArray.java:52)
at com.firebase.ui.database.FirebaseRecyclerAdapter.getItem(FirebaseRecyclerAdapter.java:106)
at com.firebase.ui.database.FirebaseRecyclerAdapter.onBindViewHolder(FirebaseRecyclerAdapter.java:122)
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6673)
at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6714)
at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5647)
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5913)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5752)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5748)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2232)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1559)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1519)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:614)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3812)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3529)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:4082)
at android.view.View.layout(View.java:16000)
at android.view.ViewGroup.layout(ViewGroup.java:5228)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
at android.view.View.layout(View.java:16000)
at android.view.ViewGroup.layout(ViewGroup.java:5228)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
at android.view.View.layout(View.java:16000)
at android.view.ViewGroup.layout(ViewGroup.java:5228)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
at android.view.View.layout(View.java:16000)
at android.view.ViewGroup.layout(ViewGroup.java:5228)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
at android.view.View.layout(View.java:16000)
at android.view.ViewGroup.layout(ViewGroup.java:5228)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
at android.view.View.layout(View.java:16000)
at android.view.ViewGroup.layout(ViewGroup.java:5228)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
at android.view.View.layout(View.java:16000)
at android.view.ViewGroup.layout(ViewGroup.java:5228)
at android.view.ViewRootImpl.perf
问题是你失去了一个孩子。要解决此问题,在向数据库添加数据时应使用push()
方法,如下所示:
mDatabase = FirebaseDatabase.getInstance().getReference().child("News").push();
mDatabase.setValue(/* yourObject */);
然后,您可以使用以下查询:
DatabaseReference personsRef = FirebaseDatabase.getInstance().getReference().child("News");
Query personsQuery = personsRef.orderByKey();
嗯,用数据库结构截图更新你的问题。从那里,我们可以跟踪错误。您可以尝试通过这种方式从firebase数据库获取数据。请添加您的数据库结构并使用@进行响应。您好@Ayodele Kayode您可以显示您的AndroidManifest.xml代码吗?我想说你忘了添加internet权限了吗?@AlexMamo()现在我有一个新错误,我已经更新了问题,这样你就可以看到新的错误。事实上,你又遇到了一个错误,这意味着最初的错误消失了,这是个好消息:)但这听起来是一个新问题,基本上应该被视为另一个问题,我不能在评论中回答,也不能仅使用上述数据。作为个人猜测,我认为你正在使用一个错误的数据库引用,但是为了遵循这个一致性的规则,请用A发布另一个新的问题,所以我和其他用户可以帮助你。如果你认为我的答案帮助了你最初的问题,请考虑通过点击复选来接受它。✔️) 在投票箭头的左边。应该换成绿色。我会很感激的。谢谢!
DatabaseReference personsRef = FirebaseDatabase.getInstance().getReference().child("News");
Query personsQuery = personsRef.orderByKey();