首页 > 解决方案 > 我们可以在回收站视图中调整项目高度吗?

问题描述

我们可以调整 recyclerview 中的项目高度(取决于项目内容大小),还是所有 recyclerview 项目必须具有相同的大小?

我的 recyclerview 正在工作,但是当内容太长时,某些内容项会被剪切..

我应该使用 CardView 来做到这一点吗?

这是我的适配器类:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {

    private Vector<String> mDataset;

    public static class MyViewHolder extends RecyclerView.ViewHolder {
        TextView title;
        TextView message;
        TextView date;

        public MyViewHolder(View v) {
            super(v);
            title = itemView.findViewById(R.id.title);
            message = itemView.findViewById(R.id.message);
            date = itemView.findViewById(R.id.date);
        }
    }

    public MyAdapter(Vector<String> myDataset) {
        mDataset = myDataset;
    }

    @Override
    public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
    {
        View v = (View)     LayoutInflater.from(parent.getContext()).inflate(R.layout.my_text_view, parent, false);
        MyViewHolder vh = new MyViewHolder(v);
        return vh;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        String[] parts = mDataset.elementAt(position).split(";");

        if (parts.length >= 4) {
            holder.title.setText(parts[2]);
            holder.message.setText(parts[3]);

            try {
                SimpleDateFormat inputFormat = new SimpleDateFormat("dd-MM-yyyy");
                Date currdate = new Date();
                Date date = inputFormat.parse(parts[0]);
                long diff = currdate.getTime() - date.getTime();
                long days = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);

                if (days == 0)
                    holder.date.setText(parts[1]);
                else
                    holder.date.setText(parts[0]);
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }

        }
    }

    @Override
    public int getItemCount() {
        return mDataset.size();
    }
}

标签: javaandroidandroid-recyclerview

解决方案


是的,您可以,您需要做的就是使项目布局的父容器wrap_content处于其高度(或宽度,如果它是水平滚动)。像这样的东西:

list_item_layout

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        <!-- here -->
        android:layout_height="wrap_content"
        tools:context=".MainActivity">

    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"/>

</FrameLayout>

最新的回收器视图库现在可以很好地处理包装内容,并且几乎没有任何错误。


推荐阅读