мне нужно вызвать метод Fragment внутри моего адаптера, но я получаю сообщение об ошибке:Вызов методы фрагмента из адаптера
ClassCastException: Main(MainActivity) cannot be cast to PlayPauseClick(Interface)
Я реализовал свой интерфейс в моем фрагменте, но я все еще получаю эту ошибку вызвать друг уже сказал мне, что mContext
(мой контекст адаптера) не может быть Fragment
.
Так как я могу решить эту проблему?
Мой метод Фрагмент:
private FunDapter<Product> adapter;
private ArrayList<Product> productList;
private ListView lvProduct;
adapter = new FunDapter<>(getActivity(), productList, R.layout.d_layout_list_d, dict);
lvProduct.setAdapter(adapter);
// My method
@Override
public void imageButtonOnClick(View v, int position){
playPause=(ImageView)v.findViewById(R.id.playPause);
Product m = productList.get(position);
playPause.setImageResource(m.getPlayPauseId());
playPause.setTag(position);
playPause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int pos = (Integer) v.getTag();
Product m =(Product) productList.get(pos);
if (paused) {
m.setPlayPauseId(R.drawable.ic_pause);
paused=false;
}else {
m.setPlayPauseId(R.drawable.ic_play);
paused = true;
}
}
});
}
Интерфейс:
public interface PlayPauseClick{
void imageButtonOnClick(View v, int position);
}
И мой адаптер:
public class FunDapter<T> extends BaseAdapter implements Filterable {
protected List<T> mDataItems;
protected LongExtractor<T> idExtractor;
protected final Context mContext;
private final int mLayoutResource;
private final BindDictionary<T> mBindDictionary;
private FunDapterFilter<T> funDapterFilter;
public FunDapter(Context context, List<T> dataItems, int layoutResource,
BindDictionary<T> dictionary) {
this(context, dataItems, layoutResource, null, dictionary);
}
public FunDapter(Context context, List<T> dataItems, int layoutResource,
LongExtractor<T> idExtractor, BindDictionary<T> dictionary) {
this.mContext = context;
this.mDataItems = dataItems;
this.mOrigDataItems = dataItems;
this.mLayoutResource = layoutResource;
this.idExtractor = idExtractor;
this.mBindDictionary = dictionary;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
final GenericViewHolder holder;
if (null == v) {
LayoutInflater vi =
(LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(mLayoutResource, null);
holder = new GenericViewHolder();
holder.root = v;
holder.playPause=(ImageView)v.findViewById(R.id.playPause);
holder.playPause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((PlayPauseClick)mContext).imageButtonOnClick(v, position);
}
});
return v;
}
ли вы реализовали интерфейс в своей деятельности? – rafsanahmad007