2016-04-22 19 views
-2

私は、私が好きなようにしたいアプリケーション.inをしています。一つのボタンをクリックするとフラグメントを開始し、フラグメントではリサイクラービューを作成しました。 Recyclerビューには、デバイス内の曲のリストが表示されます。問題は断片的なショーだけです。リサイクルビューやリサイクルビューのレイアウトはありません。ここ
は私のフラグメントのクラスで、リサイクルビューは、フラグメントのクラスである:フラグメント内のRecyclerビュー

public class Fragment_song extends Fragment { 

//ArrayList<HashMap<String, String>> songs; 
private RecyclerView recyclerView; 
SongAdapter mAdapter; 


@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.song_layout, container, false); 
    recyclerView = (RecyclerView) v.findViewById(R.id.recycler_View); 

    // mAdapter = new MoviesAdapter(songs); 
     RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getActivity()); 
    recyclerView.setLayoutManager(mLayoutManager); 
    recyclerView.setItemAnimator(new DefaultItemAnimator()); 
    mAdapter=new SongAdapter(); 
    recyclerView.setAdapter(mAdapter); 


    return v; 
} 


public void SongList() { 
    String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0"; 
    ContentResolver cr = getActivity().getContentResolver(); 
    String[] projection = { 
      MediaStore.Audio.Media._ID, 
      MediaStore.Audio.Media.ARTIST, 
      MediaStore.Audio.Media.TITLE, 
      MediaStore.Audio.Media.DATA, 
      MediaStore.Audio.Media.DISPLAY_NAME, 
      MediaStore.Audio.Media.DURATION 
    }; 
    String sortOrder = MediaStore.Audio.Media.TITLE + " ASC"; 

    Cursor cur = cr.query(
      MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
      projection, 
      selection, 
      null, 
      sortOrder); 

    mAdapter.songs = new ArrayList<HashMap<String, String>>(); 
    while (cur.moveToNext()) { 
     HashMap<String, String> map = new HashMap<String, String>(); 
     /* songs.add(cur.getString(0) + "||" 
       + cur.getString(1) + "||" 
       + cur.getString(2) + "||" 
       + cur.getString(3) + "||" 
       + cur.getString(4) + "||");*/ 

     map.put("ID", cur.getString(0)); 
     map.put("artist", cur.getString(1)); 
     map.put("title", cur.getString(2)); 
     map.put("displayname", cur.getString(3)); 
     map.put("duration", cur.getString(4)); 

     mAdapter.songs.add(map); 


    } 

} 

} 

リサイクラー見るために私のアダプタ。実行時に、時々私はアダプターが取り付けられていないようになった。レイアウトをスキップします。今

あなたがonCreateViewでSongListを()(呼び出すことを忘れ
public class SongAdapter extends RecyclerView.Adapter<SongAdapter.MyViewHolder> { 
ArrayList<HashMap<String, String>> songs=new ArrayList<HashMap<String, String>>() ; 





@Override 
public SongAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View itemView = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.recyclerview, parent, false); 

    MyViewHolder viewHolder = new MyViewHolder(itemView); 
    return viewHolder; 
} 

@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 
    //Movie movie = moviesList.get(position); 
    holder.title.setText(songs.get(position).get("displayname")); 
    holder.artist.setText(songs.get(position).get("artist")); 
    holder.duration.setText(songs.get(position).get("duration")); 
} 



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

public class MyViewHolder extends RecyclerView.ViewHolder { 
    public TextView title, duration, artist; 


    public MyViewHolder(View view) { 
     super(view); 
     title = (TextView) view.findViewById(R.id.title); 
     artist = (TextView) view.findViewById(R.id.artist); 
     duration = (TextView) view.findViewById(R.id.duration); 
    } 
} 
} 

答えて

1

+0

感謝の男!出来た。 –

0

、何をやっていることは、あなたがアダプタだ内側要素を持たないリストをレンダリングです。 これを試してください。

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
View v = inflater.inflate(R.layout.song_layout, container, false); 
recyclerView = (RecyclerView) v.findViewById(R.id.recycler_View); 

// mAdapter = new MoviesAdapter(songs); 
    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getActivity()); 
recyclerView.setLayoutManager(mLayoutManager); 
recyclerView.setItemAnimator(new DefaultItemAnimator()); 
mAdapter=new SongAdapter(); 
SongList(); 
recyclerView.setAdapter(mAdapter); 
return v; 
} 
+0

ありがとう..それは完璧に働いた! –

+0

もうひとつです!あなたが助けることができるなら私のリサイクラーのビューは準備ができていますが、私はそれをスクロールすると、リサイクルビューのアイテム間にスペースができます!!なぜそうなのか? @farhan patel –

+0

あなたはxmlファイルです –

関連する問題