简体   繁体   English

我的RecyclerView没有显示任何内容

[英]my RecyclerView does not show anything

Help. 救命。 I don't know why my RecyclerView does not show anything. 我不知道为什么我的RecyclerView不显示任何内容。 My implementation of the adapter is right. 我对适配器的实现是正确的。 I don't know where have I gone wrong. 我不知道我哪里出错了。

Here's the Fragment class: 这是Fragment类:

public class RemittanceFragment extends Fragment implements View.OnClickListener {
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
private String mParam1;
private String mParam2;

@BindView(R.id.remit_cancel_view)
View remitCancelView;

@BindView(R.id.remit_checkpaid_view)
View remitCheckPaidView;

@BindView(R.id.remit_create_view)
View remitCreateView;

@BindView(R.id.remit_main_menu)
View remitMainMenuView;

@BindView(R.id.btn_cancel)
Button btnCancel;

@BindView(R.id.btn_checkpaid)
Button btnCheckPaid;

@BindView(R.id.btn_create)
Button btnCreate;

@BindView(R.id.btn_back)
TextView btnGoBack;

@BindView(R.id.btn_back2)
TextView btnGoBack2;

@BindView(R.id.remit_header_title)
TextView tvRemitHeaderTitle;

@BindView(R.id.remit_cancel_list)
RecyclerView cancelRecyclerView;


public RemittanceFragment() {
    // Required empty public constructor
}

public static RemittanceFragment newInstance() {
    RemittanceFragment fragment = new RemittanceFragment();
    Bundle args = new Bundle();
    fragment.setArguments(args);
    return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments() != null) {
    }
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_remit_menu, container, false);
    ButterKnife.bind(this, view);

    remitCancelView.setVisibility(View.GONE);
    remitCheckPaidView.setVisibility(View.GONE);
    remitCreateView.setVisibility(View.GONE);

    btnCancel.setOnClickListener(this);
    btnCreate.setOnClickListener(this);
    btnCheckPaid.setOnClickListener(this);
    btnGoBack.setOnClickListener(this);
    btnGoBack2.setOnClickListener(this);

    return view;
}

@Override
public void onClick(View v) {
    remitMainMenuView.setVisibility(View.GONE);

    switch (v.getId()) {
        case R.id.btn_cancel:
            remitCancelView.setVisibility(View.VISIBLE);
            tvRemitHeaderTitle.setText("CANCEL\nREMITTANCE");
            populateData();
            break;
        case R.id.btn_checkpaid:
            remitCheckPaidView.setVisibility(View.VISIBLE);
            tvRemitHeaderTitle.setText("CHECK / PAID\nREMITTANCE");
            break;
        case R.id.btn_create:
            remitCreateView.setVisibility(View.VISIBLE);
            tvRemitHeaderTitle.setText("CREATE\nREMITTANCE");
            break;
        case R.id.btn_back:
        case R.id.btn_back2:
            remitMainMenuView.setVisibility(View.VISIBLE);
            remitCancelView.setVisibility(View.GONE);
            remitCheckPaidView.setVisibility(View.GONE);
            remitCreateView.setVisibility(View.GONE);
            tvRemitHeaderTitle.setText("REMITTANCE");
            break;
        default:
            break;
    }

}

public void populateData() {
    List<RemitTransaction> transactions = new ArrayList<>();
    transactions = RemitTransaction.createRemitTransactionList();

    RemitTransactionListAdapter adapter = new RemitTransactionListAdapter
            (transactions, getActivity());

    cancelRecyclerView.setAdapter(adapter);
    cancelRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
}

public static class RemitTransaction {
    private String mRefno;
    private String mDate;
    private String mMsisdn;
    private String mAmount;

    public RemitTransaction(String refno, String date, String msisdn, String amount) {
        mRefno = refno;
        mDate = date;
        mMsisdn = msisdn;
        mAmount = amount;
    }

    public String getmRefno() {
        return mRefno;
    }

    public String getmDate() {
        return mDate;
    }

    public String getmMsisdn() {
        return mMsisdn;
    }

    public String getmAmount() {
        return mAmount;
    }

    public static ArrayList<RemitTransaction> createRemitTransactionList() {
        ArrayList<RemitTransaction> transactions = new ArrayList<>();
        for (int n = 0; n < 4; n++) {
            transactions.add(n, new RemitTransaction(
                    "REF01253123" + n,
                    "July " + n + ", 2016",
                    "0920987654" + n,
                    "100" + n));

        }

        return transactions;
    }
}

public class RemitTransactionListAdapter
        extends RecyclerView.Adapter<RemitTransactionListAdapter.CancelVH>{

    private List<RemitTransaction> mList;
    private Context mContext;

    public RemitTransactionListAdapter(List<RemitTransaction> list, Context context) {
        mList = list;
        mContext = context;
    }

    private Context getContext() {
        return mContext;
    }

    @Override
    public CancelVH onCreateViewHolder(ViewGroup parent, int viewType) {
        Context context = getContext();
        View v = LayoutInflater.from(context).inflate(R.layout.remit_cancel_list_item, parent, false);
        return new CancelVH(v);
    }

    @Override
    public void onBindViewHolder(CancelVH holder, int position) {
        RemitTransaction transaction = mList.get(position);

        holder.cancelRefno.setText(transaction.getmRefno());
        holder.cancelAmount.setText(transaction.getmAmount());
        holder.cancelDate.setText(transaction.getmDate());
        holder.cancelMsisdn.setText(transaction.getmMsisdn());

    }

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

    public class CancelVH extends RecyclerView.ViewHolder {
        @BindView(R.id.remit_item_refno) TextView cancelRefno;
        @BindView(R.id.remit_item_amount) TextView cancelAmount;
        @BindView(R.id.remit_item_date) TextView cancelDate;
        @BindView(R.id.remit_item_msisdn) TextView cancelMsisdn;

        public CancelVH(View itemView) {
            super(itemView);
            ButterKnife.bind(this, itemView);
        }
    }
}
}

And here's the layout file: 这是布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/utility_white"
android:paddingTop="@dimen/dimen_margin_vertical_extra_large">


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

</LinearLayout>

And here's the list_item layout: 这是list_item布局:

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

<TextView
    android:id="@+id/remit_item_refno"
    style="@style/RemitListItem"
    android:text="VW832191"
    android:textStyle="bold"
    android:layout_alignParentStart="true"/>

<TextView
    android:id="@+id/remit_item_amount"
    style="@style/RemitListItem"
    android:text="100.00"
    android:textStyle="bold"
    android:layout_alignParentEnd="true"/>

<TextView
    android:id="@+id/remit_item_date"
    style="@style/RemitListItem"
    android:text="2016-07-20"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/remit_item_refno"/>


<TextView
    android:id="@+id/remit_item_msisdn"
    style="@style/RemitListItem"
    android:text="09273450686"
    android:layout_alignParentEnd="true"
    android:layout_below="@+id/remit_item_amount"/>

</RelativeLayout>

Hope you can all help me. 希望大家能帮助我。 Thank you! 谢谢!

在早期版本的支持库23.2.0中,wrap_content不适用于RecyclerView,并且在支持库23.2.0及更高版本中,wrap_content可以完美工作(现在的最新版本为24.0.0),我想这是您的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM