android - 按下后退按钮之前未显示 RecyclerView 数据
问题描述
伙计们,我正在使用 firebase 实时数据库。我创建了带有搜索按钮的搜索工具栏,以使用回收器视图显示数据过程。数据可以按原样显示,但我有问题,除非我按下后退按钮,否则数据不会显示。如果我不按返回按钮数据未显示。我希望数据在按回车或单击搜索按钮后显示,数据显示不按返回按钮
搜索活动.java
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search_movies_series);
Typeface font2 = Typeface.createFromAsset(getAssets(), "fonts/NunitoBold.ttf");
SS = new SpannableStringBuilder(getString(R.string.search));
SS.setSpan(new CustomTypefaceSpan("NunitoBold", font2), 0, SS.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
getSupportActionBar().setTitle(SS);
dbMovies = FirebaseDatabase.getInstance().getReference().child("Movies");
dbSeries = FirebaseDatabase.getInstance().getReference().child("Series");
dbtvChannels = FirebaseDatabase.getInstance().getReference().child("Channels");
recyclerView = findViewById(R.id.rcvSearch);
recyclerView.setHasFixedSize(true);
mLayoutManager = new GridLayoutManager(SearchActivity.this,3
, LinearLayoutManager.VERTICAL,false);
recyclerView.setLayoutManager(mLayoutManager);
lnSearch=findViewById(R.id.lnSearch);
edtSearch=findViewById(R.id.edtSearch);
rbMovie=findViewById(R.id.rbMovie);
rbSerie=findViewById(R.id.rbSerie);
lnSearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!TextUtils.isEmpty(edtSearch.getText().toString())) {
if (rbMovie.isChecked())
showList(dbMovies, edtSearch.getText().toString());
else if (rbSerie.isChecked())
showList(dbSeries, edtSearch.getText().toString());
else
Toast.makeText(SearchActivity.this, getString(R.string.chk), Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(SearchActivity.this, getString(R.string.xsearc), Toast.LENGTH_SHORT).show();
}
}
});
}
private void showList(final DatabaseReference data,String edt) {
final Query qrMyimages = data.orderByChild("name").startAt(edt.toUpperCase()).endAt(edt.toLowerCase()+"\uf8ff");
firebaseRecyclerAdapterList= new FirebaseRecyclerAdapter<Genre, latestMoviesViewHolder>(
Genre.class,
R.layout.layout_movies_ver,
latestMoviesViewHolder.class,
qrMyimages
) {
@Override
protected void populateViewHolder(final latestMoviesViewHolder viewHolder, final Genre model, int position) {
final String listPostKey = getRef(position).getKey();
data.child(listPostKey).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String thumb_picture = String.valueOf(dataSnapshot.child("imageurl").getValue());
final String movieName = String.valueOf(dataSnapshot.child("name").getValue());
final String release_date = String.valueOf(dataSnapshot.child("release_date").getValue());
viewHolder.setImage(thumb_picture);
viewHolder.tvMovieName.setText(movieName);
viewHolder.tvMovieYear.setText(release_date);
viewHolder.imgvMovie.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(data.getKey().equals("Movies")){
Intent movie = new Intent(SearchActivity.this, DetailsActivity.class);
movie.putExtra("id_watch", listPostKey);
movie.putExtra("key_watch", "movies");
movie.putExtra("name_watch", viewHolder.tvMovieName.getText().toString());
startActivity(movie);
}else
if(data.getKey().equals("Series")){
Intent movie = new Intent(SearchActivity.this, DetailsActivity.class);
movie.putExtra("id_watch", listPostKey);
movie.putExtra("key_watch", "series");
movie.putExtra("name_watch", viewHolder.tvMovieName.getText().toString());
startActivity(movie);
}else{
Intent movie = new Intent(SearchActivity.this, DetailsActivity.class);
movie.putExtra("id_watch", listPostKey);
movie.putExtra("key_watch", "channels");
movie.putExtra("name_watch", viewHolder.tvMovieName.getText().toString());
startActivity(movie);
}
}
});
}
解决方案
创建实例后,您应该将其设置firebaseRecyclerAdapterList
为 recyclerView 适配器。new FirebaseRecyclerAdapter
在函数 showList 和 decleration 之后,FirebaseRecyclerAdapter
只需添加:
recyclerView.setAdapter(firebaseRecyclerAdapterList)
推荐阅读
- javascript - 如何使用 getElementByID 遍历并制作表格
- jekyll - Jekyll 博客在 github 页面上发布,带有项目 url
- mysql - 如何查找本月订购的同一客户是否也订购了下个月?
- hyperledger-fabric - 如何正确设置 Hyperledger Fabric 通道策略?(未能满足频道创建政策)
- python - 如何从一个python脚本导入函数而不调用它
- c - ffmpeg 示例程序在 Ubuntu 18.04.5 上失败,但在 macOS 10.14.6 上工作
- fortran - 递归类型的内部组件不会在内部赋值中复制
- r - 如何根据来自另一个向量的值删除 R 中数据框中的列?
- php - Laravel not receiving paypal webhook events
- c# - Visual Studio mac 2019(社区)-PresentationCore-找不到.Net Framework 4 的程序集