Intereting Posts
Как обнаружить ошибки сохранения изображений в каталоге неправильной плотности Android? Что означает «Этот метод устарел» означает для разработчиков приложений Android – печать полного исключения backtrace для журнала Как добавить кнопку в информационное окно маркера? Как обрезать растровое изображение выбранной области на холсте? IDE «Невозможно разрешить стиль @ Theme / Theme.Appcompat» при использовании темы поддержки совместимости v7 Отмена ожидающего действия Android – строка состояния предотвращает полный экран Получение отклонений от заданного маршрута Google Maps? В чем разница между API Google в Android SDK Ошибка установки приложения в Android Studio Ошибка Proguard при экспорте подписанного приложения с использованием пакета совместимости сотовых пакетов android.support.v4.app Android-студия logcat ничего не показывает Получение базы данных SQLite оболочкой adb в cmd Есть функция, которая преобразует HTML в открытый текст?

Вызвать метод фрагмента из адаптера

У меня есть метод sendData() в моем фрагменте. Этот метод запускает новое действие. Я хочу вызвать этот метод из моего ArrayAdapter .

Вот мой код: –

HomeFragment.java

 stagAdaper = new StaggeredAdapter(myContext, android.R.layout.simple_list_item_1, getList); mGridView.setAdapter(stagAdaper); private void sendData(int position) { myDialog = new ProgressDialog(myContext).show(getActivity(), "Fetching news..", "Just a moment"); myDialog.getWindow().setContentView(R.layout.openarticlewaitprogress); myDialog.getWindow().setTitle("Loading.."); myDialog.getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); new NewsDetails(myDialog); Intent nIntent = new Intent(getActivity(),Details.class); String Body=getList.get(position).getBody(); newsIntent.putExtra("Body", Body); startActivity(nIntent); } 

StaggeredAdapter.java

 viewHolder.layGridLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //viewHolder.layGridLayout.setForeground(R.drawable.foreground_selector); } }); return convertView; } 

Как мне это сделать?

Solutions Collecting From Web of "Вызвать метод фрагмента из адаптера"

Решение 1. Сделайте адаптер внутренним классом вашего фрагмента, чтобы вы могли напрямую вызвать метод.

Решение 2. Обновите конструктор адаптера, чтобы принять фрагмент в качестве параметра.

Что-то вроде :

 customAdapter = new CustomAdapter(myContext, android.R.layout.simple_list_item_1, getList, HomeFragment.this); 

И обновить конструктор адаптера:

 public CustomAdapter(Context context, int id, HomeFragment fragment) { this.fragment = fragment; } 

То вы вызываете методы с использованием переменной фрагмента.

 fragment.doSomething(); 

Я знаю, что поздно ответить, но есть еще два способа сделать это:

  1. Вы также можете отправлять broadcast с adapter и регистрировать его в fragment .

  2. Используйте интерфейс. Для получения дополнительной информации см. Этот вопрос.

Вы можете сделать метод sendData статическим

 public static void sendData(int position) { ...... } 

N называем это

 @Override public void onClick(View v) { // TODO Auto-generated method stub HomeFragment.sendData(position) ........ }