Reputation: 1479
I'm new to app development and I'm trying to create a Recycled View on a Fragment, however there are some problems, it throws the following errors:
Code:
namespace Homecheck.Fragments {
public class SmokeSensor : Fragment {
private RecyclerView recyclerView;
private RecyclerView.Adapter adapter;
private RecyclerView.LayoutManager layoutManager;
private List<ItemData> itemData;
public override void OnCreate(Bundle savedInstanceState) {
base.OnCreate(savedInstanceState);
recyclerView.HasFixedSize = true;
layoutManager = new LinearLayoutManager(Activity);
recyclerView.SetLayoutManager(layoutManager);
itemData = new List<ItemData>();
itemData.Add(new ItemData() {title = "Testing", image = Resource.Drawable.ic_circle_red});
adapter = new MyAdapter(itemData);
recyclerView.SetAdapter(adapter);
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.Inflate(Resource.Layout.SmokeSensor, container, false);
recyclerView = view.FindViewById<RecyclerView>(Resource.Id.smoke_recycler_view);
return view;
}
}
public class MyAdapter : RecyclerView.Adapter {
private List<ItemData> itemData;
private TextView titleText;
private ImageView imageId;
public MyAdapter(List<ItemData> itemData) {
this.itemData = itemData;
}
public class ViewHolder : RecyclerView.ViewHolder {
public View mainView { get; set; }
public TextView title { get; set; }
public ImageView image { get; set; }
public ViewHolder (View view) : base (view) {
mainView = view;
}
}
public override MyAdapter.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType) {
View itemLayoutView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.SmokeItemView, null);
titleText = itemLayoutView.FindViewById<TextView>(Resource.Id.item_title);
imageId = itemLayoutView.FindViewById<ImageView>(Resource.Id.item_icon);
ViewHolder viewHolder = new ViewHolder(itemLayoutView) { title = titleText, image = imageId };
return viewHolder;
}
public override void OnBindViewHolder(ViewHolder viewHolder, int position) {
viewHolder.title.SetText(itemData[position]);
}
public override int getItemCount() {
return itemData.Count();
}
}
public class ItemData {
public string title { get; set; }
public int image { get; set; }
}
}
I know it's most likely a stupid mistake, but I can't seem to find it and fix it.
Upvotes: 0
Views: 692
Reputation: 20764
The return type of OnCreateViewHolder
is wrong, it should be Android.Support.V7.Widget.RecyclerView.ViewHolder
You need to override ItemCount
:
public override int ItemCount {get{...}}
Wrong parameter type, fix it like this:
public override void OnBindViewHolder(Android.Support.V7.Widget.RecyclerView.ViewHolder viewHolder, int position)
Upvotes: 2