私はアルファベット順に呼び出し元の名前の配列リストをソートすることを検討しています。 コレクションや他のものを適用する方法がわからない場合は、理想的でしょうか?どのようにそれについて行くすべてのアイデア? 私はいくつかの例をオンラインで見てきましたが、何も役立たないようでした。アルファベット順に名前のarraylistをソートするにはどうすればよいですか?
私のコードに関してどのように適用されるか分かりません。 次のように私のコードは次のとおりです。
public class GroupCallAdapter extends RecyclerView.Adapter<GroupCallAdapter.CallerViewHolder> {
private CopyOnWriteArrayList<Caller> callers;
public GroupCallAdapter(@NonNull final CopyOnWriteArrayList<Caller> callers) {
this.callers = callers;
for (Caller caller : this.callers) {
}
}
@Override
public CallerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final View layout = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_caller, parent, false);
final CallerViewHolder viewHolder = new CallerViewHolder(layout);
return viewHolder;
}
@Override
public void onBindViewHolder(CallerViewHolder holder, int position) {
final Caller caller = callers.get(position);
final Participant participant = caller.getParticipant();
if (caller.getName() != null) {
holder.callerName.setText(caller.getName());
}
if (caller.getImage() != null) {
holder.callerImage.setImageBitmap(caller.getImage());
} else {
holder.callerImage.setImageResource(R.drawable.call_default_profile);
}
holder.callerImage.setVisibility(View.INVISIBLE);
holder.callerImage.setVisibility(View.VISIBLE);
final VideoView videoView;
if (participant.isMe) {
videoView = participant.videoStreamer.videoView;
} else {
videoView = participant.videoPlayer.videoView;
}
if (holder.callerVideo.getChildCount() != 0) {
holder.callerVideo.removeAllViews();
}
if (videoView.getParent() != null) {
ViewGroup parent = (ViewGroup) videoView.getParent();
parent.removeView(videoView);
}
holder.callerVideo.addView(videoView, CallerViewHolder.videoLayoutParams);
if (caller.isVideoPaused()) {
holder.callerVideo.setVisibility(View.INVISIBLE);
holder.callerImage.setVisibility(View.VISIBLE);
} else {
holder.callerVideo.setVisibility(View.VISIBLE);
holder.callerImage.setVisibility(View.INVISIBLE);
}
}
@Override
public int getItemCount() {
return callers.size();
}
public static final class CallerViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.callerVideo)
public ViewGroup callerVideo;
@BindView(R.id.callerImage)
public ImageView callerImage;
@BindView(R.id.callerName)
public TextView callerName;
protected static FrameLayout.LayoutParams videoLayoutParams = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
);
public CallerViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
この 'CopyOnWriteArrayList'を作成しているところで、上流のどこかで' Collections.sort() 'を使用してください。または、この 'RecyclerView.Adapter'を作成したリストのソートされたコピー(' Collections.sort() 'を使って)から取り除いてください。 – CommonsWare