The editTask method is overriden at TaskListActivity Class which implements the OnEditTask interface.
Why are we using the context and casting it to OnEditTask interface?
What principle of interface or java am I missing here?
This is a code from the book "Android app development for Dummies".
RecyclerView Adapter
Full RecyclerView Adapter Code
package com.example.manis.tasks.adapter;
import android.content.Context;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.manis.tasks.activity.R;
import com.example.manis.tasks.interfaces.OnEditTask;
import com.squareup.picasso.Picasso;
public class TaskListAdapter extends RecyclerView.Adapter<TaskListAdapter.ViewHolder>
{
static String[] fakeData = new String[]
{
"One","Two","Three","Four","Five","Ah....ah..ah"
};
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
CardView v = (CardView) LayoutInflater.from(parent.getContext()).inflate(R.layout.card_task, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, final int position)
{
final Context context = viewHolder.titleView.getContext();
viewHolder.titleView.setText(fakeData[position]);
Log.v("myTag",fakeData[position].toString());
Picasso.with(context)
.load(getImageUrlForTask(position))
.into(viewHolder.imageView);
viewHolder.cardView.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
((OnEditTask)context).editTask(position);
}
});
}
@Override
public int getItemCount()
{
return fakeData.length;
}
static class ViewHolder extends RecyclerView.ViewHolder
{
CardView cardView;
TextView titleView;
ImageView imageView;
public ViewHolder(CardView card)
{
super(card);
cardView=card;
titleView = (TextView) card.findViewById(R.id.text1);
imageView = (ImageView) card.findViewById(R.id.image);
}
}
public static String getImageUrlForTask(long taskId){
return "http://lorempixel.com/600/400/cats/?fakeId=" + taskId;
}
}