片段内的Recycler视图的最后一张卡片未显示,我的Recycler视图无法处理大数据

时间:2015-10-09 15:25:01

标签: android android-layout android-fragments android-recyclerview

我目前面临两个不同的问题。

1)我的回收商视图的最后一张卡根本不可见。

(我在相对布局中嵌入了我的RecyclerView。)

布局的目的是填充CoordinatorLayout内部片段的视图。 (我使用了Tabs,这是其中一个标签的布局。)

这是我的XML文件:

  <RelativeLayout

    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:id="@+id/rlv"
    tools:context=".TwoFragment">

    <android.support.v7.widget.RecyclerView

    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scrollbars="vertical"
    android:listSelector="@drawable/list_row_selector" />                   
</RelativeLayout>

2)我遇到的第二个问题是我的RecyclerView无法处理大型数据集(我使用过自定义适配器)。它一直在崩溃。

只要我放置10个物体就可以了。当ObjectList包含30个或更多元素时,它会一直崩溃。

这是我的回收站视图的自定义适配器

public class ContactAdapter扩展了RecyclerView.Adapter {

private List<Contact> contactList;

public ContactAdapter(List<Contact> contactList) {
    this.contactList = contactList;
}

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

@Override
public void onBindViewHolder(ContactViewHolder contactViewHolder, int i) {
    Contact ci = contactList.get(i);
    contactViewHolder.contactName.setText(ci.getContactName());
    contactViewHolder.uniteName.setText(ci.getUniteName());
    contactViewHolder.status.setText(ci.getStatus());
    contactViewHolder.lastUpdated.setText(ci.getLastUpdated());
    contactViewHolder.contactPicture.setImageBitmap(ci.getContactPicture());
}
@Override
public ContactViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View itemView = LayoutInflater.
            from(viewGroup.getContext()).
            inflate(R.layout.list_row, viewGroup, false);


    return new ContactViewHolder(itemView);
}

public static class ContactViewHolder extends RecyclerView.ViewHolder{

    protected TextView contactName;
    protected TextView uniteName;
    protected TextView status;
    protected TextView lastUpdated;
    protected CircleImageView contactPicture;

    public ContactViewHolder(View v) {
        super(v);
        contactName =  (TextView) v.findViewById(R.id.title);
        uniteName = (TextView)  v.findViewById(R.id.rating);
        status = (TextView)  v.findViewById(R.id.genre);
        lastUpdated = (TextView) v.findViewById(R.id.releaseYear);
        contactPicture = (CircleImageView) v.findViewById(R.id.thumbnail);
    }

}   

}

这个问题非常奇怪!如果有人可以帮助我,我会非常非常高兴!

0 个答案:

没有答案