2016-09-18 13 views
0

デバイダでRecyclerViewを作成するにはどうすればいいですか?デバイダでRecyclerViewを作成する方法

私のRecyclerViewはこのように見えます。

enter image description here

そして、私はこのようになりますRecyclerView達成したい:

enter image description here

どのように私はこれを達成することができますか?

item_row XML:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="?android:selectableItemBackground" > 

    <TextView 
     android:id="@+id/rvname" 
     android:layout_width="match_parent" 
     android:layout_height="45dp" 
     android:gravity="left" 
     android:padding="10dp" 
     android:textAlignment="center" 
     android:text="Name" 
     android:textColor="@android:color/black" 
     /> 

    </RelativeLayout> 

activity_mainのXML:あなたのrecyclerview_item.xmlはそれでCardViewを持っているので

<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" 
    tools:context="com.luminous.pick.FlipActivity"> 


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

</RelativeLayout> 
+0

追加してくださいxml fあなたのレイアウトのiles – piotrek1543

+0

@ piotrek1543私の投稿を更新しました。 –

+0

'android:background ="?android:selectableItemBackground "'行の項目からこの行を削除するだけです –

答えて

3

あなたのリサイクル業者のビューはそのように見えます。だから、それらを削除してください。

ANSWERのUPDATE:

項目のダイバーを作成するには、以下の

がRecyclerViewとフラグメント/アクティビティでDividerItemDecorationクラス

public class DividerItemDecoration extends RecyclerView.ItemDecoration { 


private static final int[] ATTRS = new int[]{ 
     android.R.attr.listDivider 
}; 

public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL; 

public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL; 

private Drawable mDivider; 

private int mOrientation; 

public DividerItemDecoration(Context context, int orientation) { 
    final TypedArray a = context.obtainStyledAttributes(ATTRS); 
    mDivider = a.getDrawable(0); 
    a.recycle(); 
    setOrientation(orientation); 
} 

public void setOrientation(int orientation) { 
    if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) { 
     throw new IllegalArgumentException("invalid orientation"); 
    } 
    mOrientation = orientation; 
} 

@Override 
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) { 

    if (mOrientation == VERTICAL_LIST) { 
     drawVertical(c, parent); 
    } else { 
     drawHorizontal(c, parent); 
    } 
} 

public void drawVertical(Canvas c, RecyclerView parent) { 
    final int left = parent.getPaddingLeft(); 
    final int right = parent.getWidth() - parent.getPaddingRight(); 

    final int childCount = parent.getChildCount(); 
    for (int i = 0; i < childCount; i++) { 
     final View child = parent.getChildAt(i); 

     final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child 
       .getLayoutParams(); 
     final int top = child.getBottom() + params.bottomMargin; 
     final int bottom = top + mDivider.getIntrinsicHeight(); 
     mDivider.setBounds(left, top, right,bottom); 

     mDivider.draw(c); 
    } 
} 

public void drawHorizontal(Canvas c, RecyclerView parent) { 
    final int top = parent.getPaddingTop(); 
    final int bottom = parent.getHeight() - parent.getPaddingBottom(); 

    final int childCount = parent.getChildCount(); 
    for (int i = 0; i < childCount; i++) { 
     final View child = parent.getChildAt(i); 
     Log.i("LOH", "drawHorizontal: "+ parent.getChildViewHolder(child).getItemViewType()); 
     final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child 
       .getLayoutParams(); 
     final int left = child.getRight() + params.rightMargin; 
     final int right = left + mDivider.getIntrinsicHeight(); 
     mDivider.setBounds(left, top, right, bottom); 
     mDivider.draw(c); 
    } 
} 

@Override 
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { 
    if (mOrientation == VERTICAL_LIST) { 
     outRect.set(0, 0, 0, mDivider.getIntrinsicHeight()); 
    } else { 
     outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0); 
    } 
}} 

を作成すればいいでは次のようにします。

mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 
    mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), LinearLayoutManager.VERTICAL)); 
+0

それは動作しますが、どうすれば2つのrecyclerviewの間に仕切を追加できますか? –

+0

@ChristineRamosあなたはリサイクラーの表示アイテムを意味しますか? –

+0

はい。上記の画像を更新しました。 –

関連する問題