Skip to content

Instantly share code, notes, and snippets.

@mikkipastel
Created July 27, 2017 06:21
Show Gist options
  • Save mikkipastel/95ae6133312a51acd0519df8713fb0a3 to your computer and use it in GitHub Desktop.
Save mikkipastel/95ae6133312a51acd0519df8713fb0a3 to your computer and use it in GitHub Desktop.
Show list by RecylerView
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000">
<android.support.v7.widget.RecyclerView
android:id="@+id/songlist"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
package com.mikkipastel.exoplanet.playlist;
import android.view.View;
public interface ItemListener {
void onClick(View v, int position);
}
package com.mikkipastel.exoplanet.playlist;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.mikkipastel.exoplanet.R;
import com.mikkipastel.exoplanet.player.PlayerActivity;
public class PlaylistFragment extends Fragment implements ItemListener{
RecyclerView songListView;
RecyclerAdapter adapter;
// sample to show before get from firebase storage
int[] cover = {R.drawable.cover01,
R.drawable.cover02,
R.drawable.cover03,
R.drawable.cover04,
R.drawable.cover05};
String[] songname = {"Breaks 6-29-2560 BE, 12_31 PM.wav",
"Essential EDM 6-23-2560 BE, 5_24 PM.wav",
"Hip Hop 6-27-2560 BE, 7_12 PM.wav",
"House 2 6-28-2560 BE, 9_08 PM.wav",
"House 6-23-2560 BE, 5_43 PM.wav"};
public PlaylistFragment() {
super();
}
public static PlaylistFragment newInstance() {
PlaylistFragment fragment = new PlaylistFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_playlist, container, false);
initInstances(rootView);
return rootView;
}
public void initInstances(View rootView){
songListView = (RecyclerView) rootView.findViewById(R.id.songlist);
adapter = new RecyclerAdapter(this, getContext(), cover, songname);
songListView.setNestedScrollingEnabled(false);
songListView.setLayoutManager(new LinearLayoutManager(getActivity()
, LinearLayoutManager.VERTICAL
, false));
songListView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onStop() {
super.onStop();
}
/*
* Save Instance State Here
*/
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// Save Instance State here
}
/*
* Restore Instance State Here
*/
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) {
// Restore Instance State here
}
}
@Override
public void onClick(View v, int position) {
Intent intent = new Intent(getActivity(), PlayerActivity.class);
intent.putExtra(PlayerActivity.BUNDLE_POSITION, position);
startActivity(intent);
}
}
package com.mikkipastel.exoplanet.playlist;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.mikkipastel.exoplanet.R;
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
Context mContext;
int[] mCover;
String[] mSongName;
ItemListener mListener;
protected int mItemCount = 0;
public RecyclerAdapter(ItemListener listener, Context context, int[] cover, String[] songname){
this.mContext = context;
this.mCover = cover;
this.mSongName = songname;
this.mListener = listener;
}
@Override
public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_track, parent, false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
// set cover and track name
ViewHolder mHolder = (ViewHolder) holder;
mHolder.cover.setImageResource(mCover[position]);
mHolder.name.setText(mSongName[position]);
mHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mListener.onClick(v, position);
}
});
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView cover;
TextView name;
public ViewHolder(View view) {
super(view);
cover = (ImageView)view.findViewById(R.id.imageTrack);
name = (TextView)view.findViewById(R.id.nameTrack);
}
}
@Override
public int getItemCount() {
int itemCount = mItemCount;
if (itemCount == 0) {
itemCount = mSongName.length;
}
return itemCount;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment