如何从Recycler View中获取数据,将其准确显示在表格布局的各列下方

时间:2019-02-02 07:21:32

标签: android android-recyclerview android-tablelayout

我试图在 TableLayout 中以相同的宽度显示数据行恰好位于其各自标题下方。数据通过设置为数据适配器的 RecyclerView 接收,但根据我的要求仅显示第一行,而其他所有行都被压缩(压缩)到左侧,而无需注意标题。

我已尝试将除 bindView 中的第一行以外的所有数据行的标题行的可见性设置为 GONE >功能,但问题仍然相同。我还尝试过使标题行成为主机XML片段的一部分,该主机使用 RecyclerView 在开始时显示。实际上,我有一个 一个Host XML 文件,该文件由 RecyclerView 和其他 XML文件 组成>由要在该RecyclerView中进行修改的 TableLayout 组成。

我的Java类是:

  private class PinHistoryViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    private TableRow headingRow;
    private Button copyPinBtn;
    private TextView mItemPinNumber;
    private TextView mItemOriginalWas;
    private TextView mItemRemainingAmount;

    public PinHistoryViewHolder(View itemView) {
        super(itemView);
        headingRow = itemView.findViewById(R.id.headingRowPinHistory);
        copyPinBtn = itemView.findViewById(R.id.copyPinHistoryPinButton);
        mItemPinNumber = (TextView) itemView.findViewById(R.id.pinNumberHIstoryListTextView);
        mItemOriginalWas = (TextView) itemView.findViewById(R.id.originalWasPinHistoryTextView);
        mItemRemainingAmount = (TextView) itemView.findViewById(R.id.remainingAmountPinHistoryTextView);
        itemView.setOnClickListener(this);
    }

    public void bindView(final int position) {

        if (position == 0) {
            headingRow.setVisibility(View.VISIBLE);
            mItemPinNumber.setText(String.valueOf(Common.pinHistories.get(position).getPin()));
            mItemOriginalWas.setText(String.valueOf(Common.pinHistories.get(position).getOriginalWas()));
            mItemRemainingAmount.setText(String.valueOf(Common.pinHistories.get(position).getRemainingAmount()));

            copyPinBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Common.copyPin = Common.pinHistories.get(position).getPin();
                }
            });
        } else {
            headingRow.setVisibility(View.GONE);
            mItemPinNumber.setText(String.valueOf(Common.pinHistories.get(position).getPin()));
            mItemOriginalWas.setText(String.valueOf(Common.pinHistories.get(position).getOriginalWas()));
            mItemRemainingAmount.setText(String.valueOf(Common.pinHistories.get(position).getRemainingAmount()));

            copyPinBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Common.copyPin = Common.pinHistories.get(position).getPin();
                }
            });
        }
    }

    public void onClick(View view) {
    }
}

由TableLayout组成的我的XML文件是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <!-- Heading Row -->
        <TableRow
            android:id="@+id/headingRowPinHistory"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#e9eaec">


            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="1dp"
                android:background="#F8F9FB"
                android:gravity="center"
                android:padding="15dp"
                android:text="Pin"
                android:textColor="@android:color/black"
                android:textSize="14sp" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="1dp"
                android:background="#F8F9FB"
                android:gravity="center"
                android:padding="15dp"
                android:text="Orignal Was"
                android:textColor="@android:color/black"
                android:textSize="14sp" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="1dp"
                android:background="#F8F9FB"
                android:gravity="center"
                android:padding="15dp"
                android:text="Remaining Amount"
                android:textColor="@android:color/black"
                android:textSize="14sp" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="1dp"
                android:background="#F8F9FB"
                android:gravity="center"
                android:padding="15dp"
                android:text=""
                android:textColor="@android:color/black"
                android:textSize="14sp" />


        </TableRow>


        <!-- Data Row -->
        <TableRow
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#E7E7E7">


            <LinearLayout
                android:layout_margin="1dp"
                android:background="@color/white">

                <TextView
                    android:id="@+id/pinNumberHIstoryListTextView"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:background="@android:color/white"
                    android:gravity="center"
                    android:padding="15dp"
                    android:text="EAE886961457257300"
                    android:textColor="@android:color/black"
                    android:textSize="14sp" />
            </LinearLayout>

            <LinearLayout
                android:layout_margin="1dp"
                android:background="@color/white">

                <TextView
                    android:id="@+id/originalWasPinHistoryTextView"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:background="@android:color/white"
                    android:gravity="center"
                    android:padding="15dp"
                    android:text="500"
                    android:textColor="@android:color/black"
                    android:textSize="14sp" />
            </LinearLayout>

            <LinearLayout
                android:layout_margin="1dp"
                android:background="@color/white">

                <TextView
                    android:id="@+id/remainingAmountPinHistoryTextView"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:background="@android:color/white"
                    android:gravity="center"
                    android:padding="15dp"
                    android:text="-500"
                    android:textColor="@android:color/black"
                    android:textSize="14sp" />
            </LinearLayout>

            <LinearLayout
                android:layout_margin="1dp"
                android:background="@color/white">

                <Button
                    android:id="@+id/copyPinHistoryPinButton"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:background="@color/greenish"
                    android:gravity="center"
                    android:padding="15dp"
                    android:text="Copy Pin"
                    android:textAllCaps="false"
                    android:textColor="@android:color/white"
                    android:textSize="14sp" />
            </LinearLayout>


        </TableRow>


    </TableLayout>


</LinearLayout>

由RecyclerView组成的我的Host XML文件是:

<LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">


                <HorizontalScrollView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">

                    <ScrollView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content">

                        <android.support.v7.widget.RecyclerView
                            android:id="@+id/pinHistoryListRecyclerView"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content" />

                    </ScrollView>
                </HorizontalScrollView>
 </LinearLayout>

我希望所有数据行都恰好位于其各自的标题下,并且具有相同的宽度,以便该表看起来像一个普通的表。

0 个答案:

没有答案