Как я могу изменить этот код и добавить в боковую категорию меню?Пользовательский навигационный ящик с категорией
На самом деле у меня есть:
- страница 1
- страница 2
- страница 3
То, что я хочу получить это:
- страница 1
- category1
- страница 2
- страница 3
- страница 4
- category2
- страница 2
- страница 3
- т.д.
MainActivity Код:
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public class MainActivity extends Activity {
private List<News> newsList = new ArrayList<News>();
private ListView listView;
private CustomListNews adapter;
private String[] mNavigationDrawerItemTitles;
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
private CharSequence mDrawerTitle;
private CharSequence mTitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MY APPLICATION CODE
mTitle = mDrawerTitle = getTitle();
mNavigationDrawerItemTitles = getResources().getStringArray(R.array.navigation_drawer_items_array);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
mDrawerList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) {
Bundle extras = new Bundle();
Intent intent = new Intent(MainActivity.this, ChannelList.class);
Intent intent1 = new Intent(MainActivity.this, Redazione.class);
Intent intent2 = new Intent(MainActivity.this, VideoGallery.class);
switch (pos) {
//Restart prima pagina
case 0:
restart();
break;
//Start zone
case 1:
extras.putString("Channel","canale1");
intent.putExtras(extras);
startActivity(intent);
break;
//Start argomenti
case 2:
extras.putString("Channel","canale2");
intent.putExtras(extras);
startActivity(intent);
break;
//Start multimedia
case 3:
startActivity(intent2);
break;
//Start redazione
case 4:
startActivity(intent1);
break;
//Start redazione
case 5:
extras.putString("Channel","rubriche");
intent.putExtras(extras);
startActivity(intent);
break;
default:
break;
}
}
});
mDrawerList.bringToFront();
mDrawerLayout.requestLayout();
ObjectDrawerItem[] drawerItem = new ObjectDrawerItem[6];
drawerItem[0] = new ObjectDrawerItem(R.drawable.ic_action_refresh, "Prima pagina");
drawerItem[1] = new ObjectDrawerItem(R.drawable.ic_action_share, "Zone");
drawerItem[2] = new ObjectDrawerItem(R.drawable.ic_action_copy, "Argomenti");
drawerItem[3] = new ObjectDrawerItem(R.drawable.ic_action_copy, "Multimedia");
drawerItem[4] = new ObjectDrawerItem(R.drawable.ic_action_share, "Reporter");
drawerItem[5] = new ObjectDrawerItem(R.drawable.ic_action_copy, "Rubriche");
DrawerItemCustomAdapter adapter = new DrawerItemCustomAdapter(this, R.layout.listview_item_row, drawerItem);
mDrawerList.setAdapter(adapter);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {
public void onDrawerClosed(View view) {
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
}
/******************************************************************************************************/
public void connectivityMessage(String msg){
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setTitle("Nessuna connessione presente");
alertDialog.setMessage(msg);
alertDialog.setPositiveButton("Riprova", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
restart();
}
});
alertDialog.setNegativeButton("Esci", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
onDestroy();
}
});
alertDialog.show();
}
@Override
public void onBackPressed() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setTitle("Conferma uscita");
alertDialog.setMessage("Sei sicuro di voler uscire ??");
alertDialog.setPositiveButton("Si", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
finish();
}
});
alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
alertDialog.show();
}
public void change(){
ChangeLog cl = new ChangeLog(this);
if (cl.firstRun())
cl.getLogDialog().show();
}
@Override
public void onStart() {
super.onStart();
Tracker tracker = GoogleAnalytics.getInstance(this).getTracker("UA-49974758-1");
tracker.set(Fields.SCREEN_NAME, "Visualizzazione prima pagina");
tracker.send(MapBuilder.createAppView().set(Fields.customDimension(1), "Premium").build());
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public void onPause() {
super.onPause();
}
public void restart(){
finish();
startActivity(getIntent());
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemid = item.getItemId();
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}if (itemid == R.id.meteo){
Intent intent = new Intent(this, Meteo.class);
startActivity(intent);
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void setTitle(CharSequence title) {
mTitle = title;
getActionBar().setTitle(mTitle);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
}
Мой ящик адаптер
package com.alessandrianews.utility;
public class DrawerItemCustomAdapter extends ArrayAdapter<ObjectDrawerItem> {
Context mContext;
int layoutResourceId;
ObjectDrawerItem data[] = null;
/*
* @mContext - app context
*
* @layoutResourceId - the listview_item_row.xml
*
* @data - the ListItem data
*/
public DrawerItemCustomAdapter(Context mContext, int layoutResourceId, ObjectDrawerItem[] data) {
super(mContext, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.mContext = mContext;
this.data = data;
}
/*
* @We'll overried the getView method which is called for every ListItem we
* have.
*
* @There are lots of different caching techniques for Android ListView to
* achieve better performace especially if you are going to have a very long
* ListView.
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View listItem = convertView;
// inflate the listview_item_row.xml parent
LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
listItem = inflater.inflate(layoutResourceId, parent, false);
// get the elements in the layout
ImageView imageViewIcon = (ImageView) listItem.findViewById(R.id.imageViewIcon);
TextView textViewName = (TextView) listItem.findViewById(R.id.textViewName);
/*
* Set the data for the list item. You can also set tags here if you
* want.
*/
ObjectDrawerItem folder = data[position];
imageViewIcon.setImageResource(folder.icon);
textViewName.setText(folder.name);
return listItem;
}
}
пакет com.alessandrianews.utility;
Выдвижные объекта Item
public int icon;
public String name;
// Constructor.
public ObjectDrawerItem(int icon, String name) {
this.icon = icon;
this.name = name;
}
}
Это мой макет:
Можете ли вы поместить какой-то макет или дизайн, что вы на самом деле хотите? –
@SurenderKumar Я отредактировал мой код –
Проверьте эту ссылку - http://www.tutecentral.com/android-custom-navigation-drawer/ –