I am trying to implement a recyclerview using a fragment. But I am always getting this error I=and I cant figure it out. Any Help is appreciated.
Here is My code for data I am trying to put in a list:
public class ItemData {
public int BatImageUrl;
public String BatTitle;
public int getBatImageUrl() {
return BatImageUrl;
}
public void setBatImageUrl(int batImageUrl) {
BatImageUrl = batImageUrl;
}
public String getBatTitle() {
return BatTitle;
}
public void setBatTitle(String batTitle) {
BatTitle = batTitle;
}
public ItemData(int BatImageUrl,String BatTitle){
this.BatImageUrl=BatImageUrl;
this.BatTitle=BatTitle;
}
public List<ItemData> itemsData;
public void initializeData(){
itemsData = new ArrayList<>();
itemsData.add(new ItemData(R.drawable.batman2,"batman-1"));
itemsData.add(new ItemData(R.drawable.batman,"batman-2"));
itemsData.add(new ItemData(R.drawable.batman3,"batman-3"));
}
}
Here is My Adapter Code:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<ItemData> itemsData;
public MyAdapter(List<ItemData> itemData) {
this.itemsData = itemData;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View BatmanView = LayoutInflater.from(parent.getContext()).inflate(R.layout.batman_cards,parent,false);
ViewHolder viewHolder = new ViewHolder(BatmanView);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
ItemData id = itemsData.get(position);
viewHolder.BatImage.setImageResource(id.getBatImageUrl());
viewHolder.BatTitle.setText(id.getBatTitle());
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView BatImage;
TextView BatTitle;
CardView cv;
public ViewHolder(View itemView) {
super(itemView);
cv = (CardView) itemView.findViewById(R.id.bat_card);
BatImage = (ImageView) itemView.findViewById(R.id.bat_image);
BatTitle = (TextView) itemView.findViewById(R.id.bat_title);
}
}
@Override
public int getItemCount() {
return itemsData.size();
}
}
Here is My fragment code:
public class BatmanFragment extends Fragment {
List<ItemData> itemsData;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View BatmanView = inflater.inflate(R.layout.batman_fragment,container,false);
return BatmanView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
RecyclerView batmanRecyclerview = (RecyclerView) getView().findViewById(R.id.batman_recycler_view);
batmanRecyclerview.setHasFixedSize(true);
GridLayoutManager gm = new GridLayoutManager(getActivity(),2);
gm.setOrientation(GridLayoutManager.VERTICAL);
batmanRecyclerview.setLayoutManager(gm);
MyAdapter mAdapter = new MyAdapter(itemsData);
batmanRecyclerview.setAdapter(mAdapter);
batmanRecyclerview.setItemAnimator(new DefaultItemAnimator());
}
}
And Finally My MainActivity:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BatmanFragment fragmentS1 = new BatmanFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.your_placeholder, fragmentS1).commit();
}
}