Ich habe in Sortierung Array Liste von Anrufernamen alphabetisch gesucht. Nicht sicher, wie man Sammlungen oder irgendetwas anderes anwendet, das ist ideal? Irgendwelche Ideen, wie man das anstellt? Ich habe ein paar Beispiele online gesehen, aber nichts schien zu helfen.Wie sortiere ich eine Arraylist von Namen alphabetisch?
Nicht sicher, wie es in Bezug auf meinen Code gilt. Mein Code ist wie folgt:
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);
}
}
Verwenden Sie 'Collections.sort()' irgendwo stromaufwärts, wo immer Sie diese 'CopyOnWriteArrayList' erstellen. Oder verwenden Sie den 'RecyclerView.Adapter' von einer sortierten Kopie der Liste, die er erstellt hat (wiederum mit 'Collections.sort()'). – CommonsWare