2014-09-10 3 views
0

Я новичок в android, я пытаюсь разработать приложение. В этом приложении есть базовая активность, которая распространяется во всех остальных видах деятельности. Основная проблема заключается в том, что я хочу реализовать ящик для навигации, я не знаю, как реализовать это без фрагментов. Может ли кто-нибудь помочь мне решить эту проблему.Чтобы реализовать навигационный ящик в существующем приложении

Thanx Нина

ответ

0

Вы можете преобразовать некоторые деятельности в фрагментах, или вы можете поместить логику для NavigationDrawer в BaseActivity.

0

Проверить это sample code:

И вы можете узнать больше о Навигация Тумбы по этой ссылке:

http://www.androidhive.info/2013/11/android-sliding-menu-using-navigation-drawer/

И делать это без Fragments я написал ниже код и используется ViewPager:

Это мой activity_main.xml:

<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"> 

    <!-- Instead of using Fragments I used ViewPager here --> 
    <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

    <!-- Listview to display slider menu --> 
    <ListView 
     android:id="@+id/list_slidermenu" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:choiceMode="singleChoice" 
     android:divider="@color/list_divider" 
     android:dividerHeight="1dp"   
     android:listSelector="@drawable/list_selector" 
     android:background="@color/list_background"/> 
</android.support.v4.widget.DrawerLayout> 

Это drawer_list_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="48dp" 
    android:background="@drawable/list_selector"> 

    <TextView 
     android:id="@+id/title" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_toLeftOf="@+id/button_delete_city" 
     android:gravity="center_vertical" 
     android:minHeight="?android:attr/listPreferredItemHeightSmall" 
     android:paddingRight="40dp" 
     android:textAppearance="?android:attr/textAppearanceListItemSmall"/> 

    <Button 
     android:id="@+id/button_delete_city" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:text="X" /> 

</RelativeLayout> 

Это NavDrawerListAdapter:

public class NavDrawerListAdapter extends BaseAdapter { 

    private Context context; 
    private ArrayList<String> navDrawerItems; 
    MainActivity act; 

    public NavDrawerListAdapter(Context context, ArrayList<String> navDrawerItems, Activity act){ 
     this.context = context; 
     this.navDrawerItems = navDrawerItems; 
     this.act = (MainActivity) act; 
    } 

    @Override 
    public int getCount() { 
     return navDrawerItems.size(); 
    } 

    @Override 
    public Object getItem(int position) {  
     return navDrawerItems.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @SuppressLint("InflateParams") 
    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
      convertView = mInflater.inflate(R.layout.drawer_list_item, null); 
      Button btn_delete = (Button)convertView.findViewById(R.id.button_delete_city); 
      btn_delete.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        act.actionDelete(position); 
       } 
      }); 

     } 

     TextView txtTitle = (TextView) convertView.findViewById(R.id.title); 

     txtTitle.setText(navDrawerItems.get(position)); 
     txtTitle.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       act.displayView(position); 
      } 
     }); 

     return convertView; 
    } 

    public void addItem(String item){ 
     navDrawerItems.add(item); 
     notifyDataSetChanged(); 
    } 

    public void removeItem(int position){ 
     navDrawerItems.remove(position); 
     notifyDataSetChanged(); 
    } 

} 

И это мой MainActivity:

private ArrayList<String> navDrawerItems; 
private NavDrawerListAdapter drawerAdapter; 
private DrawerLayout mDrawerLayout; 
private ListView mDrawerList; 
private ActionBarDrawerToggle mDrawerToggle; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    //... 
    //...other codes to implement ViewPager 
    //... 

    navDrawerItems = new ArrayList<String>(); 

    // setting the nav drawer list adapter 
    drawerAdapter = new NavDrawerListAdapter(getApplicationContext(), navDrawerItems, this); 

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mDrawerList = (ListView) findViewById(R.id.list_slidermenu); 
    mDrawerList.setAdapter(drawerAdapter); 

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
      R.drawable.ic_drawer, //nav menu toggle icon 
      R.string.app_name, // nav drawer open - description for accessibility 
      R.string.app_name // nav drawer close - description for accessibility 
    ) { 
     public void onDrawerClosed(View view) { 
      // calling onPrepareOptionsMenu() to show action bar icons 
     } 

     public void onDrawerOpened(View drawerView) { 
      // calling onPrepareOptionsMenu() to hide action bar icons 
     } 
    }; 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 

    if (savedInstanceState == null) { 
     // on first time display view for first nav item 
     displayView(0); 
    } 
} 

public void displayView(int position) { 

    mPager.setCurrentItem(position, true); 

    // update selected item and title, then close the drawer 
    mDrawerList.setItemChecked(position, true); 
    mDrawerList.setSelection(position); 
    mDrawerLayout.closeDrawer(mDrawerList); 

} 
Смежные вопросы