2017-01-23 3 views
-1

У меня есть ArrayList элементов в активности, которые я хотел бы изменить и просмотреть, когда я нажимаю на различные вкладки. У меня есть фрагменты, созданные для каждой вкладки, и у меня уже есть методы перегруппировки. Я не знаю, как получить доступ к Коллекции из активности и передать ее в фрагмент для компоновки. Каков наилучший способ для этого;Использование фрагментов, вкладок и списков в Android

ответ

0

Самый простой способ - иметь интерфейс, который использует Activity, и используется Fragment.

public interface MyInterface{ 
    List<Object> getList(); 
} 


public class MainActivity extends AppCompatActivity implements MyInterface{ 
    @Override 
    public List<Object> getList(){ 
     return myList; 
    } 
} 


public class MyFragment extends Fragment{ 
    MyInterface myInterface; 

    @Override 
    public void onAttach(Context context){ 
     myInterface = (MyInterface) context; 
     // now you can call myInterface.getList() anywhere in your fragment 
    } 
} 
+0

в этом растворе метод GetList в деятельности, как предполагается, содержит код, необходимый для возврата переменной MyList. Верный? – NVA

+0

@DapperArtisan правильный. –

0

Вы должны использовать пользовательский адаптер, простирающийся от FragmentStatePagerAdapter для просмотра пейджера, который будет хранить данные. Внутри вашего пользовательского адаптера, передавать данные на свои фрагменты в GetItem так:

`

@Override 
    public Fragment getItem(int position) { 
     YourFragment f = new YourFragment(); 
     Bundle args = new Bundle(); 
     args.putParcelable("data", filteredList); // get filteredList from list passed to adapter based on your rearrangement method 
     f.setArguments(args); 
     return f; 
    } 

`

Затем внутри фрагмента, в OnViewCreated(), вы можете получить переданные данные, как Аргументы и используйте его по назначению.

1

В вашей деятельности создайте метод, возвращающий объект Collection.

например
public ArrayList<String> getCollection() 
{ 
    return ur_Collection; 
} 

И В вашем Fragment методах использования

(TypeCast_to_your_Activity)getActivity().getCollection(); 
Смежные вопросы