【发布时间】:2017-12-09 22:09:55
【问题描述】:
我一直在研究按字母顺序排列来电者姓名的数组列表。 不确定如何应用集合或其他任何东西,哪个是理想的?关于如何去做的任何想法? 我在网上看到了几个例子,但似乎没有任何帮助。
不确定它如何应用于我的代码。 我的代码如下:
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);
}
}
【问题讨论】:
-
在上游某处使用
Collections.sort(),无论您在何处创建此CopyOnWriteArrayList。或者,让这个RecyclerView.Adapter使用它创建的列表的排序副本(同样,使用Collections.sort())。
标签: android android-layout listview android-arrayadapter