2017-01-24 5 views
0

にこれはされて表示されない子項目は私のアダプタクラス拡張リサイクルビュー

public class GenreAdapter extends ExpandableRecyclerViewAdapter<GenreViewHolder, ArtistViewHolder> { 
    Context context ; 
    LayoutInflater inflater ; 

    public GenreAdapter(List<? extends ExpandableGroup> groups,Context context) { 
     super(groups); 
     this.context = context ; 
     inflater = LayoutInflater.from(context); 
    } 

    @Override 
    public GenreViewHolder onCreateGroupViewHolder(ViewGroup parent, int viewType) { 
     //LayoutInflater inflater = LayoutInflater.from(context); 
     View view = inflater.inflate(R.layout.list_item_genre, parent, false); 
     return new GenreViewHolder(view); 
    } 

    @Override 
    public ArtistViewHolder onCreateChildViewHolder(ViewGroup parent, int viewType) { 
     View view = inflater.inflate(R.layout.list_item_artist, parent, false); 
     return new ArtistViewHolder(view); 
    } 

    @Override 
    public void onBindChildViewHolder(ArtistViewHolder holder, int flatPosition, ExpandableGroup group, 
             int childIndex) { 
     final Artist artist =(Artist) group.getItems().get(childIndex); 
     holder.setArtistName(artist.getName()); 
    } 

    @Override 
    public void onBindGroupViewHolder(GenreViewHolder holder, int flatPosition, 
             ExpandableGroup group) { 
     holder.setGenreTitle(group); 
    } 
} 

これは私のモデルクラス

package com.nmn.expandablerecycler.utils; 

import android.os.Parcel; 
import android.os.Parcelable; 

import com.thoughtbot.expandablerecyclerview.models.ExpandableGroup; 

import java.util.List; 


public class Artist implements Parcelable { 

    private String name; 
    private boolean isFavorite; 


    public Artist(String name, boolean isFavorite) { 
     this.name = name; 
     this.isFavorite = isFavorite; 
    } 

    protected Artist(Parcel in) { 
     name = in.readString(); 
    } 

    public String getName() { 
     return name; 
    } 
    /* public String getTitle() 
    { 
     return title ; 
    }*/ 
    public boolean isFavorite() { 
     return isFavorite; 
    } 

    @Override 
    public boolean equals(Object o) { 
     if (this == o) return true; 
     if (!(o instanceof Artist)) return false; 

     Artist artist = (Artist) o; 

     if (isFavorite() != artist.isFavorite()) return false; 
     return getName() != null ? getName().equals(artist.getName()) : artist.getName() == null; 

    } 

    @Override 
    public int hashCode() { 
     int result = getName() != null ? getName().hashCode() : 0; 
     result = 31 * result + (isFavorite() ? 1 : 0); 
     return result; 
    } 

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
     dest.writeString(name); 
    } 

    @Override 
    public int describeContents() { 
     return 0; 
    } 

    public static final Creator<Artist> CREATOR = new Creator<Artist>() { 
     @Override 
     public Artist createFromParcel(Parcel in) { 
      return new Artist(in); 
     } 

     @Override 
     public Artist[] newArray(int size) { 
      return new Artist[size]; 
     } 
    }; 
} 


public class Genre extends ExpandableGroup<Artist> { 

    public Genre(String title, List<Artist> items) { 
     super(title, items); 
    } 
} 

>This are my viewholder classes 
public class ArtistViewHolder extends ChildViewHolder { 

    private TextView artistName; 

    public ArtistViewHolder(View itemView) { 
     super(itemView); 
     artistName = (TextView) itemView.findViewById(R.id.artist_name); 
    } 

    public void onBind(Artist artist) { 
     artistName.setText(artist.getName()); 
    } 

    public void setArtistName (String name) 
    { 

    } 
} 


public class GenreViewHolder extends GroupViewHolder { 

     private TextView genreTitle; 

     public GenreViewHolder(View itemView) { 
      super(itemView); 
      genreTitle =(TextView) itemView.findViewById(R.id.genre_title); 
     } 

     public void setGenreTitle(ExpandableGroup group) { 
      genreTitle.setText(group.getTitle()); 
     } 
} 

>this is the main activity 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     ArrayList<Artist>artists = new ArrayList<>(); 
     for (int i = 0 ; i<6 ;i++) 
     { 
      artists.add(new Artist("naman",true)); 
     } 

     ArrayList<Genre> genres = new ArrayList<>(); 
     for (int i = 0 ; i<6 ;i++) 
     { 
      genres.add(new Genre("Sufi",artists)); 
     } 


     RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 
     LinearLayoutManager layoutManager = new LinearLayoutManager(this); 

     //instantiate your adapter with the list of genres 
     GenreAdapter adapter = new GenreAdapter(genres,this); 
     recyclerView.setLayoutManager(layoutManager); 
     recyclerView.setAdapter(adapter); 
    } 
} 

上のテキストですアーティスト(子)の名前は表示されません。拡大し、同様に私は はこれが愚かに聞こえるかもしれません。この拡張recyclerview

+0

'onBindChildViewHolder'が呼び出されているかどうかをデバッグして確認しましたか? – Dibzmania

+0

はい、印刷ログでチェックされています。 – Naman

答えて

0

男子(アーティスト)項目のテキストを表示する方法を知っている.Let崩れるが、あなたのsetArtistName方法が空の親(ジャンルテキスト)Althiugh 。このコードにartistName.setText(artist.getName());

+0

ありがとう、それは最終的に働いた。愚かな間違い:( – Naman

+0

SOに投稿している間に、コードが十分に自己検証されていることを確認してください。 – Dibzmania

0

を貼り付け、ライブラリのドキュメントは、ちょうどあなたが作成した空のメソッドをsetArtistNameして削除するには[OnBind]のからのメソッドの名前を変更するには、このスニペットでエラー

public void onBind(Artist artist) { 
    artistName.setText(artist.getName()); 
} 

public void setArtistName (String name) 
{ 

} 

を持っています。

関連する問題