2016-09-28 81 views
0

我必须实现一个自定义水平RecyclerView顶部有一个标题(标题),并在RecyclerView的末尾有一个部分(见全部)右侧。水平RecyclerView Like Paytm

我创建了一个带有页眉和页脚的RecyclerView,但我想要一个右侧部分(请参阅全部),其中onclick事件我希望引发一些事件。

在Paytm应用,它的实现

我希望得到的结果如下

enter image description here

+0

你想从我们这里为你实现吗?! 试着去做,并告诉我们你有什么问题,我们可能会帮助你。 –

+0

我试过了,能够制作页眉和页脚期望右侧部分 –

+0

你会将你的.xml添加到RecyclerView的位置。这将有助于分析 – Abhishek

回答

2

这将让你思想

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="5dp" 
android:paddingLeft="5dp" 
android:paddingRight="5dp" 
android:paddingTop="5dp"> 

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

</android.support.v7.widget.RecyclerView></RelativeLayout> 

vertical_scroll_single_entry.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="100dp" 
android:weightSum="1" 
android:gravity="center_vertical"> 

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

</android.support.v7.widget.RecyclerView> 

<Button 
    android:id="@+id/selectAllButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="See All >>" 
    android:textAllCaps="false"/></LinearLayout> 

自定义适配器类垂直卷轴

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.CustomViewHolder> { 


private Context context; 
private ArrayList arrayList; 
private LayoutInflater layoutInflater; 

public CustomAdapter(Context context, ArrayList arrayList) { 
    this.context = context; 
    this.layoutInflater = LayoutInflater.from(context); 
    this.arrayList = arrayList; 
} 

@Override 
public CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = layoutInflater.inflate(R.layout.vertical_scroll_single_entry, parent, false); 
    return new CustomViewHolder(view); 
} 

@Override 
public void onBindViewHolder(CustomViewHolder holder, int position) { 
    //initialise values to views inside holder at runtime 
    holder.recyclerView.setAdapter(new CustomAdapterTwo(context, arrayList)); 
    holder.recyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)); 
    holder.recyclerView.setHasFixedSize(true); 
} 

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

class CustomViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

    RecyclerView recyclerView; 
    Button selectAllButton; 

    public CustomViewHolder(View itemView) { 
     super(itemView); 

     recyclerView = (RecyclerView) itemView.findViewById(R.id.recyclerView); 

     selectAllButton = (Button) itemView.findViewById(R.id.selectAllButton); 
     selectAllButton.setOnClickListener(this); 

    } 

    @Override 
    public void onClick(View v) { 
     Toast.makeText(context, "Select All At : " + String.valueOf(getLayoutPosition()), Toast.LENGTH_SHORT).show(); 
    } 
}} 

水平适配器单次入境文件recycler_view_single_item.xml

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

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Price"/> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Remove this button \n and put image view" 
    android:textAllCaps="false"/></LinearLayout> 

水平回收视图适配器类

public class CustomAdapterTwo extends RecyclerView.Adapter<CustomAdapterTwo.CustomViewHolder> { 
private Context context; 
private ArrayList arrayList; 
private LayoutInflater layoutInflater; 

public CustomAdapterTwo(Context context, ArrayList arrayList) { 
    this.context = context; 
    this.arrayList = arrayList; 
    this.layoutInflater = LayoutInflater.from(context); 
} 

@Override 
public CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = layoutInflater.inflate(R.layout.recycler_view_single_item, parent, false); 

    return new CustomViewHolder(view); 
} 

@Override 
public void onBindViewHolder(CustomViewHolder holder, int position) { 



} 

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

class CustomViewHolder extends RecyclerView.ViewHolder { 

    public CustomViewHolder(View itemView) { 
     super(itemView); 
    } 
}} 

你的主要活动课

public class MainActivity extends AppCompatActivity { 
private RecyclerView verticalScrollRecyclerView; 

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

    initialiseView(); 

} 

private void initialiseView() { 

    verticalScrollRecyclerView = (RecyclerView) findViewById(R.id.verticalScrollRecyclerView); 

    ArrayList<String> stringArrayList = new ArrayList<>(); 

    stringArrayList.add("One"); 
    stringArrayList.add("Two"); 
    stringArrayList.add("Three"); 
    stringArrayList.add("Four"); 
    stringArrayList.add("Five"); 
    stringArrayList.add("Six"); 
    stringArrayList.add("Seven"); 
    stringArrayList.add("Eight"); 
    stringArrayList.add("Nine"); 
    stringArrayList.add("Ten"); 



    //setting adapter and layout manager to recyclerView 
    verticalScrollRecyclerView.setLayoutManager(new LinearLayoutManager(this)); 
    verticalScrollRecyclerView.setAdapter(new CustomAdapter(this, stringArrayList)); 
    verticalScrollRecyclerView.setHasFixedSize(true); 

}} 

看起来像

enter image description here

+0

太棒了!谢谢@Abhishek,你节省了我的时间 –

+0

实际上,有一个问题。只有在回收视图结束时才能看到 –

+0

你必须为此编写逻辑。显示你做了什么。 – Abhishek