排行榜设计 Firebase Firestore,Android 工作室

问题描述

我一直在到处寻找完美的排行榜教程,包括漂亮的用户界面。但我在任何地方都没有找到任何东西。我在这里发布我想要的东西。以及我所做的。我需要这样,前三个位置应该在顶部。其余将在列表视图中。并且我已将总限制设置为 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);

    }
}

}

Reference Image

MyLeaderboard

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...