-1

에 텍스트 뷰 캐스트 할 수없는,하지만 난 난관으로 실행했습니다. 이주는 코드는 명확하지 않지만 사용자 정의 Recyclerview.Adpater을 구축 할 때,이 방법이 있습니다RelativeLayout의는 내가 <code>RecyclerView</code>을 만들기에 <a href="https://developer.android.com/training/material/lists-cards.html" rel="nofollow noreferrer">this</a> 가이드를 따라 한 LayoutInflator

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

지금, 나는 R.layout.my_text_view 어디에서 온 알아낼 수없는 것입니다. 그들은 레이아웃 파일에서 그것을 지정하지 않았습니다. 그래서 어댑터에 코드를 넣으려고 할 때 심볼이 발견되지 않는다고 말했습니다.

<?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_recycle" 
    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=".recycle.RecycleActivity"> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recycler_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context=".recycle.RecycleActivity"/> 

    <include 
     layout="@layout/toolbar_main" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

    <TextView 
     android:id="@+id/my_text_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 
</RelativeLayout> 

을하지만 여전히를 찾을 수 없기 때문에 나는 아직도 R.layout.my_text_viewmy_text_view을 사용할 수 없습니다 : 그래서, 내 TextView에 ID로했다. 나는 또한 을 시도했는데, 이라는 것을 찾을 수있다.하지만 id가 아니라 레이아웃이 필요하다고 말한다. 그래서 나는이 같은 R.layout.activity_recycle 사용하여 시도 :

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

    return new ViewHolder(v); 
} 

을하지만 그것은 작동하지 않았다, 나는 예외를 얻을 :

java.lang.ClassCastException가 : android.widget.RelativeLayout가 안드로이드에 캐스트 할 수없는 .widget.TextView

나는 무엇을 놓치고? 이 신비한 my_text_view은 어디에서 왔으며 어떻게 사용합니까? 당신이하고있는

+0

R.layout.activity_recycle은 레이아웃입니다. textview는 레이아웃을 사용하지 않습니다. 그것은 레이아웃 아이템 ID를 취할 것입니다. –

+0

R.layout.my_text_view는 리사이틀보기에서 목록 항목과 동일하게 펼쳐지는 레이아웃이나 카드와 같습니다. –

+0

이 답변을 확인하고 해당 자습서를 따르십시오. http://stackoverflow.com/a/41499210/7130121 –

답변

0

실수는 RelativeLayout의 안에 텍스트 뷰를 팽창하려고하는 것입니다. 대신 전체 레이아웃을 팽창시키고 레이아웃 내부에서 사용 가능한 하위보기를 찾으십시오.

는 예를 들어, 레이아웃 ID activity_recycle로 RelativeLayout의입니다 먼저 팽창 및 레이아웃 내부의 부모 레이아웃으로 RelativeLayoutView 직접으로 캐스팅, item_recycle_layout.xml 말한다.

는 예를 들어, 항목 레이아웃은 다음과 같습니다

<RelativeLayout 
    ..... 
    ..... > 


    <TextView 
     android:id="@+id/my_text_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

</RelativeLayout> 

코드가 어댑터에 있어야 이제 아래 : 기본적으로

@Override 
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, 
               int viewType) { 
    // create a new view 
    RelativeLayout v = (RelativeLayout) LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.item_recycle_layout, parent, false); 
    TextView txtView = (TextView) v.findViewById(R.id.my_text_view); 

    .... 
    .... 

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

그래서 무엇을 _should_ 내 레이아웃은 어때? –

+0

다운 유권자, 아래 표의 이유를 언급하십시오! –

+0

@CacheStaheli는 업데이트 된 답변을 확인합니다! –

2

RecyclerView.Adapter의 onCreateViewHolder를 사용하여, 그것은보기에 viewholder를 반환 목록 항목의 ViewHolder는 RecyclerView에서 단일 목록 항목 (또는 행)을 팽창시키는 데 사용됩니다.

RecyclerView에 추가 할 목록 항목의 레이아웃을 만들어야합니다.

<TextView 
    android:id="@+id/my_text_view_detail" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 

지금 당신이 위와 같은 코드의 나머지 부분을 사용할 수 있습니다 예를 를 들어 R.layout.my_text_view는이 텍스트 뷰를 포함해야합니다.