问题描述
我一直在到处寻找完美的排行榜教程,包括漂亮的用户界面。但我在任何地方都没有找到任何东西。我在这里发布我想要的东西。以及我所做的。我需要这样,前三个位置应该在顶部。其余将在列表视图中。并且我已将总限制设置为 100,因此 100 个用户的数据将显示在降序中。 我只需要如果用户不在列表中,(他/她可能在 200-500 的某个地方),那么我想让他们知道他们的位置,就像参考图片一样(第 12 位,并且......就像顶部一样三个位置)。 (突出显示的颜色)或在卡片视图或任何选择为“您”。
我正在使用 Cloud Fire 商店。我在这里添加了我的代码。片段排行榜,排行榜适配器。
排行榜片段...
public class leaderboardsFragment extends Fragment {
ProgressDialog progressDialog;
TextView name;
public leaderboardsFragment() {
// required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
progressDialog = new ProgressDialog(getContext());
progressDialog.setMessage("Loading leaderboard...");
progressDialog.show();
}
FragmentleaderboardsBinding binding;
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
binding = FragmentleaderboardsBinding.inflate(inflater,container,false);
FirebaseFirestore firebaseFirestore = FirebaseFirestore.getInstance();
final ArrayList<User> users = new ArrayList<>();
final leaderboardAdapter adapter = new leaderboardAdapter(getContext(),users);
binding.recyclerView.setAdapter(adapter);
binding.recyclerView.setLayoutManager(new linearlayoutmanager(getContext()));
firebaseFirestore.collection("Users")
.orderBy("coins",Query.Direction.DESCENDING).limit(100).get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
for(DocumentSnapshot snapshot : queryDocumentSnapshots) {
User user = snapshot.toObject(User.class);
users.add(user);
progressDialog.dismiss();
}
adapter.notifyDataSetChanged();
}
});
return binding.getRoot();
}
}
排行榜适配器
public class leaderboardAdapter extends RecyclerView.Adapter
Context context;
ArrayList<User> users;
public leaderboardAdapter(Context context,ArrayList<User> users) {
this.context = context;
this.users = users;
}
@NonNull
@Override
public leaderboardViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.row_leaderboards,parent,false);
return new leaderboardViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull leaderboardAdapter.leaderboardViewHolder holder,int position) {
User user = users.get(position);
holder.binding.name.setText(user.getName()); // adding the name to leaderboard
holder.binding.coins.setText(String.valueOf(user.getCoins())); // adding the coins to leaderboard
holder.binding.index.setText(String.format("%d",position + 1)); // adding the position to leaderboard
if(position <2){
holder.binding.constraintleaderboard.setBackgroundColor(Color.GREEN);
//Change background color or design...
}
Glide.with(context)
.load(user.getProfile())
.timeout(6000)
.placeholder(R.drawable.defaultprofilephoto)
.into(holder.binding.userImageleaderboard);
// Toast.makeText(context,"Cant set!",Toast.LENGTH_SHORT).show();
}
@Override
public int getItemCount() {
return users.size();
}
public class leaderboardViewHolder extends RecyclerView.ViewHolder{
RowleaderboardsBinding binding;
public leaderboardViewHolder(@NonNull View itemView) {
super(itemView);
binding = RowleaderboardsBinding.bind(itemView);
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)