Copie possible.
Android - Add bottom navigation view dynamically
How can I add a menu dynamically to bottom navigation view?
Vous pouvez obtenir dynamiquement le menu de votre écran de navigation, puis ajouter un nouvel élément de menu avec vous la réponse JSON.
Dans votre OnNavigationItemSelectedListener, vous pouvez modifier l'URL de votre webview.
EDIT 1
Peut-être que j'ai mal compris quelque chose. Voulez-vous remplir une barre de navigation avec votre réponse JSON? Dans ce cas, mes liens ci-dessus peuvent vous aider.
Voulez-vous remplir un tiroir de navigation avec votre réponse JSON? Dans ce cas, vous devriez commencer à lire ceci: https://developer.android.com/training/implementing-navigation/nav-drawer.html
Modifier votre mise en page d'activité:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- The navigation drawer -->
<ListView android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#111"/>
</android.support.v4.widget.DrawerLayout>
- content_frame contiendra votre fragment avec une WebView.
- left_drawer contiendra vos liens dynamiques.
Obtenez le left_drawer:
mDrawerList = (ListView) findViewById(R.id.left_drawer);
Lorsque vous obtenez votre réponse JSON vient de mettre un adaptateur à votre mDrawerList:
public void onResponse(Call<List<NavBarResult>> call, Response<List<NavBarResult>> response) {
// result is a private List<Result> attribute of the class.
result = response.body();
// Set the adapter for the list view
mDrawerList.setAdapter(new ArrayAdapter<Result>(this,
android.R.layout.simple_list_item_1, result));
// Set the list's click listener
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
}
De cette façon, votre mise en page du tiroir sera rempli avec votre JSON réponse dynamique.
Ensuite, il vous suffit de définir votre OnItemClickListener pour appeler un nouveau fragment lorsque vous cliquez sur un élément de votre liste.
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
selectItem(position);
}
}
MyFragment n'est pas développ ici, mais il contiendrait une webView et attendre une ARG_LINK qui devrait être une URL à afficher dans son webView.
private void selectItem(int position) {
// Create a new fragment and specify the link to show based on position
Fragment fragment = new MyFragment();
Bundle args = new Bundle();
args.putString(MyFragment.ARG_LINK, result.get(position).getUrl());
fragment.setArguments(args);
// Insert the fragment by replacing any existing fragment
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.content_frame, fragment)
.commit();
// Highlight the selected item and close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerLayout.closeDrawer(mDrawerList);
}
J'espère que cela vous aidera cette fois!