передать Arraylist из activity в navigationdrawerfragment?
Добавлено: 07 дек 2014, 15:57
Добрый день!
Цель - сделать динамическое наполнение данными NavDrawerFragment, полученными от сервера.
Вижу так - требуется передать из активити в фрагмент данные, потом применить адаптер по ним.
Перепробовал кучу вариантов, начиная от доступа к статическим переменным и заканчивая этим:
main.java - коренное активити для бокового меню.
класс модели:
и сам класс бокового меню - oncreateview.
в фрагмент ничего не приходит... Если не знаете решения, предложите варианты, пожалуйста. парю голову 3й день.
Цель - сделать динамическое наполнение данными NavDrawerFragment, полученными от сервера.
Вижу так - требуется передать из активити в фрагмент данные, потом применить адаптер по ним.
Перепробовал кучу вариантов, начиная от доступа к статическим переменным и заканчивая этим:
main.java - коренное активити для бокового меню.
Код: Выделить всё
public class main extends Activity
implements NavigationDrawerFragment.NavigationDrawerCallbacks {
/**
* Fragment managing the behaviors, interactions and presentation of the navigation drawer.
*/
private NavigationDrawerFragment mNavigationDrawerFragment;
/**
* Used to store the last screen title. For use in {@link #restoreActionBar()}.
*/
private CharSequence mTitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList<NavListModel> items = new ArrayList<NavListModel>();
items.add(new NavListModel(NavListAdapter.TYPE_ADDCAR,2,"hhh"));
items.add(new NavListModel(NavListAdapter.TYPE_CAR,3,"car","asd"));
items.add(new NavListModel(NavListAdapter.TYPE_USER,4,"user","asd"));
items.add(new NavListModel(NavListAdapter.TYPE_ITEM,5,"item","asd"));
items.add(new NavListModel(NavListAdapter.TYPE_HEADER,1,"header"));
items.add(new NavListModel(NavListAdapter.TYPE_HEADER,1,"header"));
items.add(new NavListModel(NavListAdapter.TYPE_HEADER,1,"asd"));
Bundle NavItems = new Bundle();
NavItems.putParcelableArrayList("items", items);
mNavigationDrawerFragment = new NavigationDrawerFragment();
mNavigationDrawerFragment.setArguments(NavItems);
mNavigationDrawerFragment = (NavigationDrawerFragment)
getFragmentManager().findFragmentById(R.id.navigation_drawer);
mTitle = getTitle();
// Set up the drawer.
mNavigationDrawerFragment.setUp(
R.id.navigation_drawer,
(DrawerLayout) findViewById(R.id.drawer_layout));
}Код: Выделить всё
public class NavListModel implements Parcelable {
private String Text;
private int Type;
private int Id;
private String ImageURL=null;
public NavListModel(int Type, int id, String Text, String ImageURL)
{
this.Text=Text;
this.Type=Type;
this.Id=id;
this.ImageURL=ImageURL;
}
public NavListModel(int Type, int id, String Text)
{
this.Text=Text;
this.Type=Type;
this.Id=id;
}
public void setText(String Text)
{
this.Text=Text;
}
public void setType(int Type)
{
this.Type=Type;
}
public void setId(int id)
{
this.Id=id;
}
public String getText()
{
return this.Text;
}
public int getType()
{
return this.Type;
}
public int getId()
{
return this.Id;
}
public String getImageURL()
{
return this.ImageURL;
}
public void setImageURL(String ImageURL)
{
this.ImageURL=ImageURL;
}
@Override
public int describeContents() {
return 0;
}
private NavListModel(Parcel in)
{
Bundle bundle=in.readBundle();
this.Id=(bundle.getInt("Id"));
this.Type=(bundle.getInt("Type"));
this.ImageURL=(bundle.getString("ImageURL"));
this.Text=(bundle.getString("Text"));
}
@Override
public void writeToParcel(Parcel dest, int flags) {
Bundle bundle = new Bundle();
bundle.putString("ImageURL",this.ImageURL);
bundle.putString("Text",this.Text);
bundle.putInt("Id", this.Id);
bundle.putInt("Type",this.Type);
dest.writeBundle(bundle);
}
public static final Parcelable.Creator<NavListModel> CREATOR = new Parcelable.Creator<NavListModel>() {
@Override
public NavListModel createFromParcel(Parcel source)
{
Bundle bundle = source.readBundle();
int Id=(bundle.getInt("Id"));
int Type=(bundle.getInt("Type"));
String ImageURL=(bundle.getString("ImageURL"));
String Text=(bundle.getString("Text"));
if (ImageURL==null) {
return new NavListModel(Type,Id,Text);
}
else
{
return new NavListModel(Type,Id,Text,ImageURL);
}
}
@Override
public NavListModel[] newArray(int size) {
return new NavListModel[size];
}
};
}Код: Выделить всё
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mDrawerListView = (ListView) inflater.inflate(
R.layout.fragment_navigation_drawer, container, false);
mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
selectItem(position);
}
});
ArrayList<NavListModel> items = new ArrayList<NavListModel>();
items=getArguments().getParcelableArrayList("items");
mDrawerListView.setAdapter(new NavListAdapter(
getActionBar().getThemedContext(),
android.R.id.text1,
items));
mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
return mDrawerListView;
}