2017-02-14 30 views
1

我有无尽RecyclerView与库PullLoadView当RecyclerView reachs机器人负载RecyclerView结束

RecyclerView是填补了布局,我想在这个RecyclerView负载的所有项目,并达到最终的结尾,我加载另一个RecyclerView位于底部,它有自己的适配器和行布局并继续。

这样的应用程序,我需要:

第一RecyclerView

first recyclerView

第一RecyclerView到达末端和新RecyclerView显示

first recyclerView reaches end and new recyclerView show up

RecyclerView继续次Ë第一RecyclerView完全layour屏幕

new recyclerView continue the first recyclerView in full layour screen

XML代码:

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

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

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

</LinearLayout> 
+0

做替换您xml源?你可以使用ListView的底部? – raktale

+0

你应该结合这两个并利用'viewtype'参见https://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter.html#getItemViewType(int) – WenChao

+0

我不想要就像上面的图片一样,我只需要解决方案就可以在彼此之后制作两个match_parent recyclerViews –

回答

1

与下方源要使用Recyclerview只为仰视图以及

<?xml version="1.0" encoding="utf-8"?> 

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:scrollbars="none"> 
<LinearLayout 
    android:id="@+id/activity_search" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

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

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

</android.support.v4.widget.NestedScrollView> 
+0

它的工作原理是完美的,但因为我的RecyclerViews中有一个是Endless with library,它在这个解决方案中有一些问题,但是我会解决它,谢谢你的帮助 –

+0

在这个解决方案中一次加载RecyclerView的所有行?这是最佳吗? –

+0

不是最优的。但是,这会显示api结果并一次性扩展回收站视图。但是如果在回收站视图中加载更多的情况,onScroll加载更多的回收站数据也将被称为 –

0

将它们放在NestedScrollView与垂直方向的LinearLayout中,并通过设置自己的LinearLayout经理这样禁用其滚动。

LinearLayoutManager mLayoutManager = new LinearLayoutManager(this) { 
     @Override 
     public boolean canScrollVertically() { 
      return false; 
     } 
    }; 
+0

我的XML如何看起来像? –

0

使用的ListView作为底部的查看,并在您的ListView头把RecycerView

list_sample.xml(这是你设置的活动内容主要布局)

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/content_main" 
    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"> 

    <ListView 
     android:id="@+id/list_sample" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

</RelativeLayout> 

header_recycler.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="match_parent" 
    android:orientation="vertical"> 

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

</LinearLayout> 

item_header.xml(标题列表的项目,即recycl erview一个)

<?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" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/item_header_regular" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:background="#FF2255" /> 


</LinearLayout> 

list_item.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="match_parent" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/text" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" /> 

</LinearLayout> 

HeaderRecyclerView.java(RecyclerView适配器)

import android.content.Context; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

import java.util.List; 

public class HeaderRecyclerView extends RecyclerView.Adapter<HeaderRecyclerView.HeaderHolder> { 
    private final Context context; 
    private List<String> items; 

    public HeaderRecyclerView(List<String> items, Context context) { 
     this.items = items; 
     this.context = context; 
    } 

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

    @Override 
    public void onBindViewHolder(HeaderHolder holder, int position) { 
     String item = items.get(position); 
     holder.textView.setText(item); 
    } 

    @Override 
    public int getItemCount() { 
     if (items == null) { 
      return 0; 
     } 
     return items.size(); 
    } 

    class HeaderHolder extends RecyclerView.ViewHolder { 

     TextView textView; 

     HeaderHolder(View itemView) { 
      super(itemView); 
      textView = (TextView) itemView.findViewById(R.id.item_header_regular); 
     } 
    } 
} 

BottomListAdapter.java(ListView的适配器)

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 

import java.util.ArrayList; 
import java.util.List; 

public class BottomListAdapter extends BaseAdapter { 

    private List<String> items = new ArrayList<>(); 
    private Context context; 

    public BottomListAdapter(List<String> items, Context context) { 
     this.items = items; 
     this.context = context; 
    } 

    @Override 
    public int getCount() { 
     return items.size(); 
    } 

    @Override 
    public String getItem(int i) { 
     return items.get(i); 
    } 

    @Override 
    public long getItemId(int i) { 
     return i; 
    } 

    @Override 
    public View getView(int i, View convertView, ViewGroup viewGroup) { 

     TextView txtView; 

     if (convertView == null) { 
      convertView = LayoutInflater.from(context) 
        .inflate(R.layout.list_item, viewGroup, false); 
      txtView = (TextView) convertView.findViewById(R.id.text); 
      convertView.setTag(new ViewHolder(txtView)); 
     } else { 
      ViewHolder viewHolder = (ViewHolder) convertView.getTag(); 
      txtView = viewHolder.txtView; 
     } 

     String string = getItem(i); 
     txtView.setText(string); 

     return convertView; 
    } 

    private static class ViewHolder { 

     public final TextView txtView; 

     public ViewHolder(TextView txtView) { 
      this.txtView = txtView; 
     } 
    } 

} 

In您的onCreate使用下面的初始化为follwing

ListView listView = (ListView) findViewById(R.id.list_sample); 

     View view = getLayoutInflater().inflate(R.layout.header_recycler, null); 

     RecyclerView headerList = (RecyclerView) view.findViewById(R.id.list_header); 

     List<String> strings = new ArrayList<>(); 

     for (int i = 0; i < 50; i++) { 
      strings.add(i + ""); 
     } 

     headerList.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)); 
     headerList.setAdapter(new HeaderRecyclerView(strings, this)); 

     listView.addHeaderView(view); 
     listView.setAdapter(new BottomListAdapter(strings, this)); 
+0

我不明白,xml代码的外观如何?谢谢 –

+0

在你xml你只会有ListView给我一分钟我会编造代码并发布在这里。 – raktale