2017-01-27 2 views
0

저는 Android를 처음 사용하고 있으며 앱을 만들고 있어요. UI와 같은 udemy 또는 playstore를 갖고 싶지만 여러 섹션을 구현하는 방법을 모르겠습니다. 다양한 웹 페이지를 보았지만 그걸 잡을 수없는 것 같아 아무도 제발 도와 줄 수 없나요? 당신의 친절한 도움이 같은어떻게 섹션 ​​리사이클 뷰를 구현할 수 있습니까?

뭔가 감사합니다, 올바른 방향 또는 쉬운 튜토리얼 제발 날 지점 : 그것은 당신의 검색을 기반으로, 판매 과정, 우리는 추천의 섹션이 https://lh3.googleusercontent.com/5WRlb_NPDauO0zluiwbL6JXF8c1G6uVxJwd2I_6hXY87x7Mc6gcbN7KMFtCe75kM0z4=h310

활동 main.xml에

<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="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.hasg_.myapplication.MainActivity"> 
<android.support.v7.widget.RecyclerView 
android:id="@+id/recycler_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 

/> 
</RelativeLayout> 

행 :

이 내가 무엇을 가지고 .XML

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="200dp" 
    android:layout_margin="12dp" 
    android:layout_height="300dp"> 
    <TextView 
     android:id="@+id/title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

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

adapter.java

package com.example.hasg_.myapplication; 

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

import java.util.ArrayList; 

/** 
* Created by hasg_ on 23/01/2017. 
*/ 
public class MainAdapter extends RecyclerView.Adapter<MainAdapter.ViewHolder> { 
    private ArrayList<String> mDataset; 

    public MainAdapter(ArrayList<String> mDataset) { 
     this.mDataset = mDataset; 
    } 

    @Override 
    public MainAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     // create a new view 
     View v = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.row, parent, false); 
     // set the view's size, margins, paddings and layout parameters 

     ViewHolder vh = new ViewHolder(v); 
     return vh; 
    } 

    @Override 
    public void onBindViewHolder(MainAdapter.ViewHolder holder, int position) { 

    holder.mTitle.setText(mDataset.get(position)); 
    } 

    @Override 
    public int getItemCount() { 

     return mDataset.size(); 
    } 

    public class ViewHolder extends RecyclerView.ViewHolder { 
     public TextView mTitle; 
     public ViewHolder(View itemView) { 
      super(itemView); 

      mTitle= (TextView) itemView.findViewById(R.id.title); 
     } 
    } 
} 

MainActivity.java

package com.example.hasg_.myapplication; 

import android.app.Activity; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView; 

import java.util.ArrayList; 

public class MainActivity extends AppCompatActivity { 
    private RecyclerView mRecyclerView; 
    private RecyclerView.LayoutManager mLayoutManager; 
    private RecyclerView.Adapter mAdapter; 
    private ArrayList<String> mDataset; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mDataset=new ArrayList<>(); 
     for (int i = 0; i < 30; i++) { 
      mDataset.add("New Title #"+i); 


     } 
     mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view); 
     mRecyclerView.setHasFixedSize(true); 
     mLayoutManager = new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false); 
      mRecyclerView.setLayoutManager(mLayoutManager); 
     mAdapter= new MainAdapter(mDataset); 
     mRecyclerView.setAdapter(mAdapter); 


     } 
    } 
+0

'다중 섹션'의 의미를 명확히 할 수 있습니까? 여러 ListView를 의미하는 경우 사용할 각 데이터 소스에 대해 ListView를 만들어야합니다. – degs

+0

나는 내 질문을 편집했습니다. –

+0

http://android-pratap.blogspot.com/2015/12/horizontal-recyclerview-in-vertical.html –

답변

0

당신은 각 데이터 소스에 대한 레이아웃에 별도의 RecyclerView을 만들어야합니다 당신은 대표하고 싶습니다. 그들의 데이터가 다르다면 (아마도 그렇게 될 것입니다) 각각에 대해 고유 한 어댑터와 항목 레이아웃 파일을 만들어야합니다. 다른 ID를 부여하고 MainActivity에 올바르게 모두 구성해야합니다.

그러면 더 명확한 섹션에서 원하는대로 레이아웃 할 수 있습니다 (activity main.xml). GitHub의에 주어진

2

이 같은 onCreateViewHolder() 안에 다른 XML 파일을 부풀려 아래 링크를 참조하시기 바랍니다 :

View view; 
    switch (viewType) { 
     case 0: 
      view = LayoutInflater.from(parent.getContext()).inflate(R.layout.test_0, parent, false); 
      break; 

     case 1: 
      view = LayoutInflater.from(parent.getContext()).inflate(R.layout.test_1, parent, false); 
      break; 

     case 2: 
      view = LayoutInflater.from(parent.getContext()).inflate(R.layout.test_2, parent, false); 
      break; 

     case 3: 
      view = LayoutInflater.from(parent.getContext()).inflate(R.layout.test_3, parent, false); 
      break; 

     case 4: 
      view = LayoutInflater.from(parent.getContext()).inflate(R.layout.test_4, parent, false); 
      breal; 

     default: 
      view = LayoutInflater.from(parent.getContext()).inflate(R.layout.test_0, parent, false); 

    } 

다음은 override getItemViewType()입니다.

@Override 
public int getItemViewType(int position) { 
    return mItems.get(position); //data source 
} 
관련 문제