RecyclerView во фрагменте
Всем привет! Не получается добавить список элементов для RecyclerView, который в свою очередь находится во фрагменте. Приложение запускается, но во фрагменте ничего не появляется. В произвольном порядке накидал список по-быстрому таким способом. Пробовал создавать отдельно класс DataUtils, но тогда не получается вытащить оттуда объект этого списка.
public class MusicFragment extends Fragment {
private static final String TAG = "MusicFragment";
//public ArrayList<String> mImgNames = new ArrayList<>();
//public ArrayList<String> mImgUrls = new ArrayList<>();
private List<MusicItem> musicItems = new ArrayList<>();
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
public MusicFragment() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment MusicFragment.
*/
// TODO: Rename and change types and number of parameters
public static MusicFragment newInstance(String param1, String param2) {
MusicFragment fragment = new MusicFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
Log.d(TAG, "onCreate: sterted.");
initImageBitmaps();
}
private void initImageBitmaps() {
Log.d(TAG, "initImageBitmaps: preparing bitmaps.");
musicItems.add(new MusicItem(
"Звуки природы", "https://images.app.goo.gl/6ax4vuTfiYASqhZh8.jpg"
));
musicItems.add(new MusicItem(
"Звуки дождя", "https://images.app.goo.gl/XeDqGhBygmPs7MSz8.jpg"
));
musicItems.add(new MusicItem(
"Звуки леса", "https://images.app.goo.gl/Qxb8BHrJgMB24ww29.jpg"
));
musicItems.add(new MusicItem(
"Звуки птиц", "https://images.app.goo.gl/Qxb8BHrJgMB24ww29.jpg"
));
musicItems.add(new MusicItem(
"Звуки урагана", "https://images.app.goo.gl/Qxb8BHrJgMB24ww29.jpg"
));
musicItems.add(new MusicItem(
"Звуки волн", "https://images.app.goo.gl/Qxb8BHrJgMB24ww29.jpg"
));
musicItems.add(new MusicItem(
"Звуки шелеста листьев", "https://images.app.goo.gl/Qxb8BHrJgMB24ww29.jpg"
));
musicItems.add(new MusicItem(
"Звуки прибоя", "https://images.app.goo.gl/Qxb8BHrJgMB24ww29.jpg"
));
musicItems.add(new MusicItem(
"Звуки снега", "https://images.app.goo.gl/Qxb8BHrJgMB24ww29.jpg"
));
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
//return inflater.inflate(R.layout.fragment_music, container, false);
View view = inflater.inflate(R.layout.fragment_music, container, false);
RecyclerView recyclerView = view.findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
//RecyclerViewAdapter adapter = new RecyclerViewAdapter(getActivity(), mImgNames, mImgUrls);
MusicAdapter adapter = new MusicAdapter(getActivity(), musicItems);
recyclerView.setAdapter(adapter);
return view;
}
Отправлю написанный мной адаптер
public class MusicAdapter extends RecyclerView.Adapter<MusicAdapter.ViewHolder> {
private static final String TAG = "RecyclerViewAdapter";
private List<MusicItem> musicItems= new ArrayList<>();
private Context mContext;
public MusicAdapter(List<MusicItem> musicItems, Context mContext) {
this.musicItems = musicItems;
this.mContext = mContext;
}
public MusicAdapter(RecyclerView recyclerView) {
}
public MusicAdapter(FragmentActivity activity, List<MusicItem> musicItems) {
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.music_list_item, parent, false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
Log.d(TAG, "onBindViewHolder: called");
Glide.with(mContext)
.asBitmap()
.load(musicItems.get(position))
.into(holder.imageView);
holder.imgName.setText((CharSequence) musicItems.get(position));
holder.relativeLayoutListItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onClick: clicked on: " + musicItems.get(position));
Toast.makeText(mContext, (CharSequence) musicItems.get(position), Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
return musicItems.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;
TextView imgName;
RelativeLayout relativeLayoutListItem;
public ViewHolder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.item_image);
imgName = itemView.findViewById(R.id.item_image_name);
relativeLayoutListItem = itemView.findViewById(R.id.relativeLayout_list_item);
}
}
}