在回收器视图中单独 Package 项目的内容?

rvpgvaaj  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(315)

我想用最简单的方法解决这个问题。设置“回收器”视图以 Package 内容,当然,会将回收器调整为最大的项目。将其设置为“匹配父项”将调整所有项,使其始终处于最大值。
设置适配器中的最大宽度会使所有项目都是该大小,无论是什么。此刻目瞪口呆。
我的适配器类

public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.MessageViewHolder> {

    private ArrayList<Message> messageList;
    private Context context;
    private MessageSelectListener messageSelectListener;

    public MessageAdapter(Context context, ArrayList<Message> messageList){
        this.messageList = messageList;
        this.context = context;
    }

    //Create an interface
    public interface MessageSelectListener{
        void onMessageClick(Message message, int position);
    }

    public void setMessageClickListener(MessageSelectListener messageSelectListener){
        this.messageSelectListener = messageSelectListener;
    }

    @NonNull
    @Override
    public MessageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.message_list, parent, false);
        RecyclerView.LayoutParams lp = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        view.setLayoutParams(lp);
        //View view = new TextView(context);
        //View rootView = LayoutInflater.from(context).inflate(R.layout.order_list, parent, false);

        return new MessageViewHolder(view);

    }

    @Override
    public void onBindViewHolder(@NonNull MessageViewHolder holder, final int position) {

        final Message message = messageList.get(position);
        holder.text.setText(message.getMessageText());

        holder.text.setBackgroundResource(R.drawable.rounded_corner_white_noborder);

        // passing Order and Position as parameter to interface method,
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                messageSelectListener.onMessageClick(message, position);
            }
        });

    }

    @Override
    public int getItemCount() {
        return messageList == null ? 0 : messageList.size();
    }

    public class MessageViewHolder extends RecyclerView.ViewHolder{

        public TextView text;
        public Message message;

        public MessageViewHolder(@NonNull View itemView) {
            super(itemView);
            text = (TextView) itemView;
        }

    }
}
2jcobegt

2jcobegt1#

解决方案是将oncreateviewholder()方法中的布局参数更改为 Package 内容

@NonNull
    @Override
    public MessageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.message_list, parent, false);
        RecyclerView.LayoutParams lp = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.**WRAP_CONTENT**, ViewGroup.LayoutParams.WRAP_CONTENT);
        view.setLayoutParams(lp);
        //View view = new TextView(context);
        //View rootView = LayoutInflater.from(context).inflate(R.layout.order_list, parent, false);

        return new MessageViewHolder(view);

    }

相关问题