-3

in this code, I used breakpoints on each line of RecyclerView Class but the only constructor of this class is called, no more function(OnCreateViewHolder, OnBindViewHolder, GetItemCount(), etc) is being calledenter image description here. Images from LogCat has also been uploaded...

MainActivity

package com.example.admin.recyclerview;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    RecyclerView recyclerView;
    RecyclerView.Adapter adapter;
    RecyclerView.LayoutManager layoutManager;
    String[] titles;
    String[] description;
    int[] images = {R.drawable.facebook, R.drawable.instagram, R.drawable.twitter, R.drawable.google};
    ArrayList<DataProvider> arrayList = new ArrayList<DataProvider>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        recyclerView = findViewById(R.id.recyclerView);
        titles = getResources().getStringArray(R.array.titles);
        description = getResources().getStringArray(R.array.description);
        int i = 0;
        for(String name : titles){
            DataProvider dataProvider = new DataProvider(images[i], titles[i], description[i]);
            arrayList.add(dataProvider);
            i++;
        }

        adapter = new RecyclerAdapter(arrayList);
        recyclerView.setHasFixedSize(true);
        layoutManager = new LinearLayoutManager(this);
        recyclerView.setAdapter(adapter);
    }
}

RecyclerView Class

package com.example.admin.recyclerview;

import android.support.annotation.NonNull;
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 java.util.ArrayList;

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.RecyclerViewHolder> {

    private ArrayList<DataProvider> arrayList = new ArrayList<DataProvider>();

    public RecyclerAdapter(ArrayList<DataProvider> arrayList){
        this.arrayList = arrayList;
    }

    @Override
    public RecyclerViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_layout, viewGroup, false);
        return new RecyclerViewHolder(view);
    }

    @Override
    public void onBindViewHolder(RecyclerViewHolder recyclerViewHolder, int i) {
        DataProvider dataProvider = arrayList.get(i);
        recyclerViewHolder.imageView.setImageResource(dataProvider.getImage_res());
        recyclerViewHolder.title.setText(dataProvider.getTitle());
        recyclerViewHolder.description.setText(dataProvider.getDescription());
    }

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

    public static class RecyclerViewHolder extends RecyclerView.ViewHolder{
        ImageView imageView;
        TextView title;
        TextView description;

        public RecyclerViewHolder(@NonNull View itemView) {
            super(itemView);
            imageView = itemView.findViewById(R.id.icon);
            title = itemView.findViewById(R.id.title);
            description = itemView.findViewById(R.id.description);
        }
    }
}

DataProvider

package com.example.admin.recyclerview;

public class DataProvider {
    private int image_res;
    private String title;
    private String description;


    public DataProvider(int image_res, String title, String description) {
        this.image_res = image_res;
        this.title = title;
        this.description = description;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public int getImage_res() {
        return image_res;
    }

    public void setImage_res(int image_res) {
        this.image_res = image_res;
    }
}

2 Answers2

0

you are not adding the LayoutManager to your RV.

recyclerView.setLayoutManager(layoutManager)

without that your RV won't function

Blackbelt
  • 156,034
  • 29
  • 297
  • 305
0

You missed to add LayoutManager. Add recyclerView.setLayoutManager(layoutManager);

    adapter = new RecyclerAdapter(arrayList);
    recyclerView.setHasFixedSize(true);
    layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager); // add this line
    recyclerView.setAdapter(adapter);
Khemraj Sharma
  • 57,232
  • 27
  • 203
  • 212