У меня есть адаптер RecyclerView для избранного пользователя.Представление реселлера заполняется во фрагменте диалогового окна.
public class FavoriteAdapter extends RecyclerView.Adapter<FavoriteViewHolder> implements ILatLong {
private Context context;
View view;
MainActivity mainActivity;
private List<Favorite> listFavorites;
private SQLiteDB mDatabase;
private int position;
private ILatLong mCallback;
public FavoriteAdapter(ILatLong mCallback){
this.mCallback = mCallback;
}
public FavoriteAdapter(Context context, List<Favorite> listFavorites) {
this.context = context;
this.listFavorites = listFavorites;
mDatabase = new SQLiteDB(context);
}
@Override
public void onBindViewHolder(final FavoriteViewHolder holder, final int mPosition) {
final Favorite singleFavorite = listFavorites.get(mPosition);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "Clicked " + "'" + singleFavorite.getName() + "'", Toast.LENGTH_SHORT, true).show();
//mainActivity.onLatLngData(singleFavorite.getLat(), singleFavorite.getLong());
mCallback.onLatLngData(singleFavorite.getLat(), singleFavorite.getLong());
}
});
//other stuff
@Override
public void onLatLngData(Double lat, Double lng) {
try {
mCallback = (ILatLong) context;
}
catch (ClassCastException e) {
Log.d("MyDialog", "Activity doesn't implement the ILatLong interface");
}
}
}
Интерфейс:
public interface ILatLong {
void onLatLngData(Double lat, Double lng);
}
Метод MainActivity:
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener, ILatLong {
@Override
public void onLatLngData(Double lat, Double lng) {
//use the values
}
}
Я настроил onclicklistener вonBindViewHolder, как вы можете видеть, так что я знаю, по какому элементу щелкают, и когда по элементу ресервера выбирают, он отображает тост с правильным именем элемента (или любым другим атрибутом, который я хочу).
Когда я пытаюсь иотправить широту и долготу обратно в мой метод mainactivity, раскомментировав строку в onclick, я получаю «java.lang.NullPointerException: попытка вызвать виртуальный метод ... onLatLngData (java.lang.Double, java.lang.Double)» нассылка на нулевой объект ".
Как я могу отправить эти данные обратно в мою основную деятельность?Я попытался использовать интерфейс для обратного вызова MainActivity, но безуспешно, но, возможно, я сделал это неправильно.
Редактировать : включил интерфейс обратного вызова