【发布时间】:2019-09-22 01:05:40
【问题描述】:
我已经看到很多关于这个问题的答案,但对我的编码没有任何帮助。
我参考了基于此youtube 视频的代码,现在我遇到了这个问题。不知道他的代码是如何工作的,而我的不是。显然我也是这个话题的新手(RecyclerView)。
这是我的主要活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_product) ;
ref = FirebaseDatabase.getInstance().getReference().child("buddymealplanneruser").child("Products");
recyclerView = findViewById(R.id.stallproductRecyclerView);
//newest
LinearLayoutManager manager = new LinearLayoutManager(this);
manager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(manager);
recyclerView.setHasFixedSize(true);
//
searchView = findViewById(R.id.searchProductStall);
}
@Override
protected void onRestart() {
super.onRestart();
if (ref!=null)
{
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists())
{
list = new ArrayList<>();
for(DataSnapshot ds : dataSnapshot.getChildren())
{
list.add(ds.getValue(Model.class));
}
ViewHolder viewHolder = new ViewHolder(list);
recyclerView.setAdapter(viewHolder);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(ViewProduct.this, databaseError.getMessage(),
Toast.LENGTH_SHORT).show();
}
});
}
这是 ViewHolder 类。
ArrayList<Model> list;
public ViewHolder (ArrayList<Model> list)
{
this.list=list;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_product,
viewGroup,false);
return new MyViewHolder(view);
}
【问题讨论】:
-
你应该查看谷歌代码实验室的 RecyclerView,codelabs.developers.google.com/codelabs/…
标签: android android-recyclerview adapter