在RecyclerView中叠加后出现下一个项目

达瓦尔·古尔汉(Dhaval Gulhane)

我已经创建了RecyclerView。当它在屏幕上呈现时,每个屏幕仅显示一项。向下滚动RecyclerView可以看到下一个项目。这是我的代码

    public class LeaveStatusViewAdapter extends RecyclerView
        .Adapter<LeaveStatusViewAdapter
        .DataObjectHolder> {
    private static String LOG_TAG = "MyRecyclerViewAdapter";
    private ArrayList<Employee> mDataset;
    private static MyClickListener myClickListener;

    public static class DataObjectHolder extends RecyclerView.ViewHolder
            implements View
            .OnClickListener {
        TextView startDate;
        TextView endDate;
        TextView leaveType;
        TextView leaveDays;
        TextView leaveReason;
        TextView leaveStatus;

        public DataObjectHolder(View itemView) {
            super(itemView);
            startDate = (TextView) itemView.findViewById(R.id.textView_StartDate);
            endDate = (TextView) itemView.findViewById(R.id.textView_EndDate);
            leaveType = (TextView) itemView.findViewById(R.id.textView_LeaveType);
            leaveDays = (TextView) itemView.findViewById(R.id.textView_LeaveDays);
            leaveReason = (TextView) itemView.findViewById(R.id.textView_LeaveReason);
            leaveStatus = (TextView) itemView.findViewById(R.id.textView_LeaveStatus);
            Log.i(LOG_TAG, "Adding Listener");
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            myClickListener.onItemClick(getAdapterPosition(), v);
        }
    }

    public void setOnItemClickListener(MyClickListener myClickListener) {
        this.myClickListener = myClickListener;
    }

    public LeaveStatusViewAdapter(ArrayList<Employee> myDataset) {
        mDataset = myDataset;
    }

    @Override
    public DataObjectHolder onCreateViewHolder(ViewGroup parent,
                                               int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.card_view_row, parent, false);

        DataObjectHolder dataObjectHolder = new DataObjectHolder(view);
        return dataObjectHolder;
    }

    @Override
    public void onBindViewHolder(DataObjectHolder holder, int position) {
        holder.startDate.setText(mDataset.get(position).getLeaveStartDate());
        holder.endDate.setText(mDataset.get(position).getLeavesEndDate());
        holder.leaveType.setText(mDataset.get(position).getLeaveType());
        holder.leaveDays.setText(mDataset.get(position).getLeaveDays());
        holder.leaveReason.setText(mDataset.get(position).getLeaveReason());
        holder.leaveStatus.setText(mDataset.get(position).getLeaveStatus());
    }

    public void addItem(Employee dataObj, int index) {
        mDataset.add(index, dataObj);
        notifyItemInserted(index);
    }

    public void deleteItem(int index) {
        mDataset.remove(index);
        notifyItemRemoved(index);
    }

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

    public interface MyClickListener {
        public void onItemClick(int position, View v);
    }
}

以下是活动课

public class LeaveStatusActivity extends AppCompatActivity {
    private RecyclerView mRecyclerView;
    private RecyclerView.Adapter mAdapter;
    private RecyclerView.LayoutManager mLayoutManager;
    private static String LOG_TAG = "CardViewActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_leave_status);

        mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
        mRecyclerView.setHasFixedSize(true);
        mLayoutManager = new LinearLayoutManager(this);
        mRecyclerView.setLayoutManager(mLayoutManager);
        mAdapter = new LeaveStatusViewAdapter(getDataSet());
        mRecyclerView.setAdapter(mAdapter);
    }

    @Override
    protected void onResume() {
        super.onResume();
        ((LeaveStatusViewAdapter) mAdapter).setOnItemClickListener(new LeaveStatusViewAdapter
                .MyClickListener() {
            @Override
            public void onItemClick(int position, View v) {
                Log.i(LOG_TAG, " Clicked on Item " + position);
            }
        });
    }

    private ArrayList<Employee> getDataSet() {
        ArrayList results = new ArrayList<Employee>();
        for (int index = 0; index < 3; index++) {
            Employee obj = new Employee(" : 15/07/2016",
                    " : 20/07/2016"," : EL: Earned Leave"," : 5"," : Not feeeling well"," : Pending");
            results.add(index, obj);
        }
        return results;
    }
}

以下是布局文件

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.leave.mcgm.mcgmleavemanagement.LeaveStatusActivity">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/my_recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical"/>
</LinearLayout>

在RecyclerView中为每个项目执行以下自定义视图

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v7.widget.CardView
        android:id="@+id/card_view"
        android:layout_gravity="center"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp">

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/lbl_StartDate"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textStyle="bold"
                android:layout_alignParentTop="true"
                android:text="Start Date"/>

            <TextView
                android:id="@+id/textView_StartDate"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_toEndOf="@+id/lbl_StartDate" />
            <TextView
                android:id="@+id/lbl_EndDate"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="End Date"
                android:textStyle="bold"
                android:layout_marginStart="24dp"
                android:layout_alignParentTop="true"
                android:layout_toEndOf="@+id/textView_LeaveReason" />
            <TextView
                android:id="@+id/textView_EndDate"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBaseline="@+id/lbl_EndDate"
                android:layout_alignBottom="@+id/lbl_EndDate"
                android:layout_toEndOf="@+id/lbl_EndDate" />
            <TextView
                android:id="@+id/lbl_LeaveType"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:text="LeaveType"
                android:layout_below="@+id/lbl_EndDate"
                android:layout_alignParentStart="true"
                android:textStyle="bold"/>
            <TextView
                android:id="@+id/textView_LeaveType"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:text=""
                android:layout_alignBaseline="@+id/lbl_LeaveType"
                android:layout_alignBottom="@+id/lbl_LeaveType"
                android:layout_toEndOf="@+id/lbl_LeaveType" />
            <TextView
                android:id="@+id/lbl_LeaveDays"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Leave Days"
                android:singleLine="true"
                android:layout_below="@+id/lbl_EndDate"
                android:layout_alignStart="@+id/lbl_EndDate"
                android:textStyle="bold"/>
            <TextView
                android:id="@+id/textView_LeaveDays"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:text=""
                android:layout_alignBaseline="@+id/lbl_LeaveDays"
                android:layout_alignBottom="@+id/lbl_LeaveDays"
                android:layout_toEndOf="@+id/lbl_LeaveDays" />
            <TextView
                android:id="@+id/lbl_LeaveReason"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Leave Reason"
                android:singleLine="true"
                android:layout_alignTop="@+id/textView_LeaveReason"
                android:layout_alignParentStart="true"
                android:textStyle="bold"/>
            <TextView
                android:id="@+id/textView_LeaveReason"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:text=""
                android:layout_below="@+id/textView_LeaveDays"
                android:layout_toEndOf="@+id/lbl_LeaveReason" />
            <TextView
                android:id="@+id/lbl_LeaveStatus"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Leave Status"
                android:singleLine="true"
                android:layout_alignBaseline="@+id/textView_LeaveStatus"
                android:layout_alignBottom="@+id/textView_LeaveStatus"
                android:layout_alignParentStart="true"
                android:textStyle="bold"/>
            <TextView
                android:id="@+id/textView_LeaveStatus"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:text=""
                android:layout_below="@+id/lbl_LeaveReason"
                android:layout_toEndOf="@+id/lbl_LeaveReason"
                android:textAllCaps="true"/>
        </RelativeLayout>
    </android.support.v7.widget.CardView>
</LinearLayout>

我在这里想念什么吗?

米格尔·贝尼特斯(Miguel Benitez)

您应该将列表的每个元素的视图更改为 android:layout_height="wrap_content"

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
<android.support.v7.widget.CardView
        android:id="@+id/card_view"
        android:layout_gravity="center"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp">
.....
</LinearLayout>

当您使用android:layout_height="match_parent"列表中的每个项目时,都将尝试使用屏幕上可能的最大空间

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Qualtrics,视频开始后出现下一个按钮

来自分类Dev

链接到动态页面时出现下一个js错误

来自分类Dev

在 Swift/Objective-C 中实现下一个线程解决方案

来自分类Dev

在 RecyclerView 项目上应用 SearchFilter 和 OnClick 后,在下一个 Fragment 中获取 RecyclerView 项目的错误位置

来自分类Dev

如何在RecyclerView中追加下一个新项目?

来自分类Dev

如何在RecyclerView中追加下一个新项目?

来自分类Dev

删除项目后如何在角度列表中查找下一个空闲ID

来自分类Dev

删除项目后如何在角度列表中查找下一个空闲ID

来自分类Dev

专注于容器中的下一个项目

来自分类Dev

给班级到列表中的下一个项目

来自分类Dev

给班级到列表中的下一个项目

来自分类Dev

在呈现下一个之前清除html5 canavas strokeText中的文本

来自分类Dev

RecyclerView 仅在编辑要添加的下一个项目时显示项目

来自分类Dev

获取列表中给定项目的上一个/下一个项目

来自分类Dev

如何仅在移动当前项目后加载下一个可拖动项目?

来自分类Dev

实施viewpager后无法在我的详细信息活动中滑动至下一个项目

来自分类Dev

如何从模型列表中统一实现下一个按钮和上一个按钮?

来自分类Dev

如何获得下一个RecyclerView项目的参考

来自分类Dev

首次出现后如何为所有下一个日期添加条目

来自分类Dev

for 中的下一个元素

来自分类Dev

将当前项目与python列表中的下一个项目进行比较

来自分类Dev

如何引用列表中的下一个项目并将其与之前的项目进行比较?

来自分类Dev

将当前项目与python列表中的下一个项目进行比较

来自分类Dev

在 jQuery 中按下一个键后在表中添加一行

来自分类Dev

根据上一个项目的ID获取数组中的下一个项目

来自分类Dev

如何从列表中删除一个项目并从下一个项目开始计数?

来自分类Dev

将当前单词的下一个出现添加到VIM中的选择中

来自分类Dev

Retrofit2:在 recyclerview 中执行下一个任务之前等待响应

来自分类Dev

查询以查找在树中存储为邻接表的树中的下一个项目

Related 相关文章

  1. 1

    Qualtrics,视频开始后出现下一个按钮

  2. 2

    链接到动态页面时出现下一个js错误

  3. 3

    在 Swift/Objective-C 中实现下一个线程解决方案

  4. 4

    在 RecyclerView 项目上应用 SearchFilter 和 OnClick 后,在下一个 Fragment 中获取 RecyclerView 项目的错误位置

  5. 5

    如何在RecyclerView中追加下一个新项目?

  6. 6

    如何在RecyclerView中追加下一个新项目?

  7. 7

    删除项目后如何在角度列表中查找下一个空闲ID

  8. 8

    删除项目后如何在角度列表中查找下一个空闲ID

  9. 9

    专注于容器中的下一个项目

  10. 10

    给班级到列表中的下一个项目

  11. 11

    给班级到列表中的下一个项目

  12. 12

    在呈现下一个之前清除html5 canavas strokeText中的文本

  13. 13

    RecyclerView 仅在编辑要添加的下一个项目时显示项目

  14. 14

    获取列表中给定项目的上一个/下一个项目

  15. 15

    如何仅在移动当前项目后加载下一个可拖动项目?

  16. 16

    实施viewpager后无法在我的详细信息活动中滑动至下一个项目

  17. 17

    如何从模型列表中统一实现下一个按钮和上一个按钮?

  18. 18

    如何获得下一个RecyclerView项目的参考

  19. 19

    首次出现后如何为所有下一个日期添加条目

  20. 20

    for 中的下一个元素

  21. 21

    将当前项目与python列表中的下一个项目进行比较

  22. 22

    如何引用列表中的下一个项目并将其与之前的项目进行比较?

  23. 23

    将当前项目与python列表中的下一个项目进行比较

  24. 24

    在 jQuery 中按下一个键后在表中添加一行

  25. 25

    根据上一个项目的ID获取数组中的下一个项目

  26. 26

    如何从列表中删除一个项目并从下一个项目开始计数?

  27. 27

    将当前单词的下一个出现添加到VIM中的选择中

  28. 28

    Retrofit2:在 recyclerview 中执行下一个任务之前等待响应

  29. 29

    查询以查找在树中存储为邻接表的树中的下一个项目

热门标签

归档