bugfix> java > 投稿

アプリでリーダーボードアクティビティを作成し、上位25人のユーザーを表示します。 RecyclerView

ロードするとすべて正常に機能し、次のように表示されます。

しかし、どういうわけか、私がスクロールすると RecyclerView メダルが削除され、次のように表示されます。

私のアダプターは:

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
    storageRef = FirebaseStorage.getInstance().getReference();
    otherUserID = usersID.get( position );
    otherUserName = usersName.get( position );
    if (tabCase == 0) {
        String result = String.format( "%.2f", usersResult.get( position ) );
        otherUserResult = result;
    } else {
        otherUserResult = String.format( "%.0f", usersResult.get( position ) );
    }
    holder.tv_PersonName.setText( otherUserName );
    holder.tv_Result.setText( otherUserResult );
    holder.tv_Ranking.setText( Integer.toString( position + 1 ) );
    if (position == 0) {
        holder.iv_Medal.setImageResource( R.drawable.ic_gold_medal );
    } else if (position == 1) {
        holder.iv_Medal.setImageResource( R.drawable.ic_silver_medal );
    } else if (position == 2) {
        holder.iv_Medal.setImageResource( R.drawable.ic_bronze_medal );
    } else {
        holder.iv_Medal.setVisibility( View.GONE );
    }
    storageRef.child( "/Images/" + otherUserID + ".jpg" ).getDownloadUrl().addOnSuccessListener( uri -> Glide.with( mView.getContext() ).load( uri.toString() ).into( holder.iv_PersonPic ) ).addOnFailureListener( e -> {
        Glide.clear( holder.iv_PersonPic );
        holder.iv_PersonPic.setImageDrawable( null );
    } );
    holder.itemView.setOnClickListener( v -> {
        Intent intent = new Intent( mView.getContext(), UsersPreviewActivity.class );
        intent.putExtra( AppConstants.PREVIEW_KEY, otherUserID );
        mView.getContext().startActivity( intent );
    } );
}

それらのメダルを最初の3つに固執させる方法はありますか?

ありがとうございました

回答 1 件
  • 他のif条件で以下を呼び出し、ビューをVISIBLEに設定します

    holder.iv_Medal.setVisibility( View.VISIBLE);
    
    

    そのようです:

    if (position == 0) {
        holder.iv_Medal.setImageResource( R.drawable.ic_gold_medal );
        holder.iv_Medal.setVisibility( View.VISIBLE);
    } else if (position == 1) {
        holder.iv_Medal.setImageResource( R.drawable.ic_silver_medal );
        holder.iv_Medal.setVisibility( View.VISIBLE);
    } else if (position == 2) {
        holder.iv_Medal.setImageResource( R.drawable.ic_bronze_medal );
        holder.iv_Medal.setVisibility( View.VISIBLE);
    } else {
        holder.iv_Medal.setVisibility( View.GONE );
    }
    
    

あなたの答え