我正在尝试做我认为简单的任务:实现一个片段,该片段根据互联网的可用性显示不同的视图。 明确说明:尝试在没有连接的情况下启动youtube应用,您会看到一个漂亮的错误屏幕,并带有“重试”按钮。当您单击按钮时,(只是视图或其他内容的)片段会重新加载,并且如果现在可以使用互联网,则显示正确的项目。 我在ViewPager中有两个片段。一个片段具有recyclerview,它从firebase中检索数据。我希望第一个片段显示错误消息和“重试”按钮。按下按钮时,就像youtube应用程序一样,如果网络可用,我想重新加载片段的内容并显示正确的内容。 我不知道该怎么办。enter image description here 请帮忙!
Fragment_1.java
public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle b)
{
View view=inflater.inflate(R.layout.fragment_home,group,false);
recyclerView=(RecyclerView)view.findViewById(R.id.recyclerview);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(view.getContext()));
myref= FirebaseDatabase.getInstance().getReference().child("/Blog");
FirebaseRecyclerAdapter<Blog,BlogViewHolder> recyclerAdapter=new FirebaseRecyclerAdapter<Blog,BlogViewHolder>(
Blog.class,
R.layout.individual_row,
BlogViewHolder.class,
myref
) {
@Override
protected void populateViewHolder(BlogViewHolder viewHolder, Blog model, int position) {
viewHolder.setTitle(model.getTitle());
viewHolder.setDescription(model.getDescription());
viewHolder.setImage(model.getImage());
}
};
recyclerView.setAdapter(recyclerAdapter);
return view;
}
}
答案 0 :(得分:1)
与在网络上更改replacing fragments
而不是在create a view
上进行的更改相同,只需将其添加到具有recyclerView的片段即可。而在网络上,只需show or hide
更改此视图即可。
答案 1 :(得分:1)
Youtube 使用retry
之类的单独视图,如果无法访问互联网,则会隐藏recylerview。另一方面,如果设备中可以使用互联网,则它会隐藏重试视图,然后加载recyclervbiew并使用 Swiprefresh 视图自动加载列表。当然,一切都在相同片段中发生,而不是像您所要求的那样在单独的片段中发生。假设retry
是 TextView ,如果互联网不可用setVisibilty
可见。并且 Recyclerview setVisibility
< strong>消失。如果互联网可用,则setVisibility
的{{1}}的Textview将消失,而recyclerview的retry
则是{strong>可见的。
setvisibility