我应该在 onBindViewHolder 中放置什么来绑定我的模型并填充我的 RecyclerView?
What do i put in onBindViewHolder to bind my models and populate my RecyclerView?
现在我正尝试使用 Firebase UI 3.1.1 来填充回收器视图。我看到的所有教程都已过时,过时的教程也不完整。这是我目前所拥有的...
private void setUpFirebaseAdapter() {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference(Constants.LOBBIES);
Query query = reference;
mRecyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
FirebaseRecyclerOptions lobbyOptions = new FirebaseRecyclerOptions.Builder<Lobby>().setQuery(query, Lobby.class).build();
mLobbyAdapter = new FirebaseRecyclerAdapter<Lobby, LobbyViewHolder>(lobbyOptions) {
@Override
protected void onBindViewHolder(@NonNull LobbyViewHolder holder, int position, @NonNull Lobby model) {
holder.
}
@Override
public LobbyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return null;
}
};
}
我要在 holder 中放什么才能完成回收站视图?谢谢!
编辑。这也是我的 View holder class
public class LobbyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
View mView;
Context mContext;
public LobbyViewHolder(View itemView) {
super(itemView);
mView = itemView;
mContext = itemView.getContext();
itemView.setOnClickListener(this);
}
public void bindLobby(Lobby lobby) {
TextView nameTextView = (TextView) mView.findViewById(R.id.lobby_name_text);
TextView locationTextView = (TextView) mView.findViewById(R.id.lobby_location_text);
TextView sizeTextView = (TextView) mView.findViewById(R.id.lobby_size_text);
TextView priceTextView = (TextView) mView.findViewById(R.id.lobby_price_text);
TextView dateTextView = (TextView) mView.findViewById(R.id.lobby_date_text);
nameTextView.setText(lobby.getOwner());
locationTextView.setText(lobby.getLocation());
sizeTextView.setText(lobby.getTotalMembers());
priceTextView.setText("Php " + lobby.getCost());
dateTextView.setText(lobby.getDateText());
}
@Override
public void onClick(View v) {
final ArrayList<Lobby> lobbies = new ArrayList<>();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference(Constants.LOBBIES);
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot snapshot : dataSnapshot.getChildren()){
lobbies.add(snapshot.getValue(Lobby.class));
}
int itemPosition = getLayoutPosition();
Intent intent = new Intent(mContext, LobbyDetailActivity.class);
intent.putExtra("position", itemPosition + "");
intent.putExtra("lobbies", Parcels.wrap(lobbies));
mContext.startActivity(intent);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
据我所知,您也没有膨胀布局视图 (onCreateViewHolder),请这样做:
private void setUpFirebaseAdapter() {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference(Constants.LOBBIES);
Query query = reference;
mRecyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
FirebaseRecyclerOptions lobbyOptions = new FirebaseRecyclerOptions.Builder<Lobby>().setQuery(query, Lobby.class).build();
mLobbyAdapter = new FirebaseRecyclerAdapter<Lobby, LobbyViewHolder>(lobbyOptions) {
@Override
protected void onBindViewHolder(@NonNull LobbyViewHolder holder, int position, @NonNull Lobby model) {
holder.bindLobby(model);
//here you associate the holder views with the model attributes
}
@Override
public LobbyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.your_layout_file, parent, false);
return new LobbyViewHolder(view);
}
};
}
现在我正尝试使用 Firebase UI 3.1.1 来填充回收器视图。我看到的所有教程都已过时,过时的教程也不完整。这是我目前所拥有的...
private void setUpFirebaseAdapter() {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference(Constants.LOBBIES);
Query query = reference;
mRecyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
FirebaseRecyclerOptions lobbyOptions = new FirebaseRecyclerOptions.Builder<Lobby>().setQuery(query, Lobby.class).build();
mLobbyAdapter = new FirebaseRecyclerAdapter<Lobby, LobbyViewHolder>(lobbyOptions) {
@Override
protected void onBindViewHolder(@NonNull LobbyViewHolder holder, int position, @NonNull Lobby model) {
holder.
}
@Override
public LobbyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return null;
}
};
}
我要在 holder 中放什么才能完成回收站视图?谢谢!
编辑。这也是我的 View holder class
public class LobbyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
View mView;
Context mContext;
public LobbyViewHolder(View itemView) {
super(itemView);
mView = itemView;
mContext = itemView.getContext();
itemView.setOnClickListener(this);
}
public void bindLobby(Lobby lobby) {
TextView nameTextView = (TextView) mView.findViewById(R.id.lobby_name_text);
TextView locationTextView = (TextView) mView.findViewById(R.id.lobby_location_text);
TextView sizeTextView = (TextView) mView.findViewById(R.id.lobby_size_text);
TextView priceTextView = (TextView) mView.findViewById(R.id.lobby_price_text);
TextView dateTextView = (TextView) mView.findViewById(R.id.lobby_date_text);
nameTextView.setText(lobby.getOwner());
locationTextView.setText(lobby.getLocation());
sizeTextView.setText(lobby.getTotalMembers());
priceTextView.setText("Php " + lobby.getCost());
dateTextView.setText(lobby.getDateText());
}
@Override
public void onClick(View v) {
final ArrayList<Lobby> lobbies = new ArrayList<>();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference(Constants.LOBBIES);
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot snapshot : dataSnapshot.getChildren()){
lobbies.add(snapshot.getValue(Lobby.class));
}
int itemPosition = getLayoutPosition();
Intent intent = new Intent(mContext, LobbyDetailActivity.class);
intent.putExtra("position", itemPosition + "");
intent.putExtra("lobbies", Parcels.wrap(lobbies));
mContext.startActivity(intent);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
据我所知,您也没有膨胀布局视图 (onCreateViewHolder),请这样做:
private void setUpFirebaseAdapter() {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference(Constants.LOBBIES);
Query query = reference;
mRecyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
FirebaseRecyclerOptions lobbyOptions = new FirebaseRecyclerOptions.Builder<Lobby>().setQuery(query, Lobby.class).build();
mLobbyAdapter = new FirebaseRecyclerAdapter<Lobby, LobbyViewHolder>(lobbyOptions) {
@Override
protected void onBindViewHolder(@NonNull LobbyViewHolder holder, int position, @NonNull Lobby model) {
holder.bindLobby(model);
//here you associate the holder views with the model attributes
}
@Override
public LobbyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.your_layout_file, parent, false);
return new LobbyViewHolder(view);
}
};
}