Intereting Posts
Прокрутка не работает с координаторомLayout + изображение параллакса + BottomSheetLayout Лучшая практика приведения Материала в настройки с помощью AppCompat? Предотвратить андроид от повторного создания стека активности после сбоя Подождите, пока потоки будут завершены, прежде чем продолжить Ошибка аутентификации: невозможно ответить на любую из этих проблем: {} Android – 401 Unauthorized Добавить представление нижнего колонтитула в webview Управление сайтом Facebook Facebook Установите разрешение «разрешить» по умолчанию в «Автозагрузке Asus» из кода Как запрашивать события календаря Android для определенного диапазона дат? Как переместить позицию компаса в Google Maps API Для Android-карты api v2 Описание ссылается на не существующую библиотеку google-play-services_lib \ bin \ google-play-services_lib.jar Android EditText в AlertDialog кажется слишком широким Google Awareness API SecurityException бросается AudioTrack – как узнать, когда начинается / заканчивается звук? Фильтрация с помощью Logcat?

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

У меня есть метод 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) ........ }