2014-12-25 24 views
0

我有一个Drawerlayout,当我启动应用程序,数据进入MainActivity与pagemain_layout(frame_container)...一切都很好。但是,当我点击drawerlayout中的项目出现在pagemain_layout中的双列表视图。Double ListView在FrameLayout Android

请给我一个解决方案或编辑我的代码。

非常感谢!

代码MainActivity

public class MainActivity extends Activity { 

    private DrawerLayout mDrawerLayout; 
    private ListView mListDrawer; 
    private ActionBarDrawerToggle mDrawerToggle; 
    private CharSequence mDrawerTitle; 
    private CharSequence mTitle; 
    private String[] navMenuTitles; 
    NavDrawerItemsAdapter adapterTest; 
    FragmentManager fragmentManager; 
    ListView lvItemLayoutMain; 
    ProgressDialog pDialog; 
    ArrayList<String> mListTitle; 
    ArrayList<String> mListURL; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.pagemain_layout); 
     mTitle = mDrawerTitle = getTitle(); 
     List<Integer> mListHeader = new ArrayList<Integer>(); 
     mListHeader.add(0); 
     mListHeader.add(5); 
     adapterTest = new NavDrawerItemsAdapter(MainActivity.this, 
       NavigationListItem.getListItemAdapter(this, mListHeader)); 
     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     mListDrawer = (ListView) findViewById(R.id.list_slidermenu); 
     navMenuTitles = getResources().getStringArray(R.array.title); 
     lvItemLayoutMain = (ListView) findViewById(R.id.list_item_main); 
     mListDrawer.setOnItemClickListener(new SlideMenuClickListener()); 
     mListDrawer.setAdapter(adapterTest); 
     getActionBar().setDisplayHomeAsUpEnabled(true); 
     getActionBar().setHomeButtonEnabled(true); 
     new LoadData().execute(); 
     mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
       R.drawable.ic_drawer, R.string.app_name, R.string.app_name) { 

      @Override 
      public void onDrawerOpened(View view) { 
       getActionBar().setTitle(mDrawerTitle); 
       invalidateOptionsMenu(); 
      } 

      @Override 
      public void onDrawerClosed(View view) { 
       getActionBar().setTitle(mTitle); 
       invalidateOptionsMenu(); 
      } 

     }; 
     mDrawerLayout.setDrawerListener(mDrawerToggle); 
     if (savedInstanceState == null) { 
      displayView(0); 
     } 

    } 

    private void displayView(int position) { 
     // update the main content by replacing fragments 
     Fragment fragment = null; 
     FragmentTransaction transaction = fragmentManager.beginTransaction(); 
     switch (position) { 
     case 1: 
      fragment = new HotNewsFragment(); 
      break; 
     case 2: 
      fragment = new FocusNewsFragment(); 
      break; 
     case 3: 
      fragment = new EducationInfoFragment(); 
      break; 
     case 4: 
      fragment = new WorkingStudentsFragment(); 
      break; 
     case 6: 
      fragment = new TimeTableFragment(); 
      break; 
     case 7: 
      fragment = new NoteFragment(); 
      break; 

     default: 
      break; 
     } 

     if (fragment != null) { 
      fragmentManager = getFragmentManager(); 
      transaction.replace(R.id.frame_container, fragment).commit(); 
      transaction.addToBackStack(null); 
      transaction.commit(); 
      // update selected item and title, then close the drawer 
      mListDrawer.setItemChecked(position, true); 
      mListDrawer.setSelection(position); 
      setTitle(navMenuTitles[position]); 
      mDrawerLayout.closeDrawer(mListDrawer); 
     } else { 
      Log.e("MainActivity", "Error in creating fragment"); 
     } 
    } 

    private class SlideMenuClickListener implements 
      ListView.OnItemClickListener { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, 
       long id) { 
      // display view for selected nav drawer item 
      displayView(position); 
     } 
    } 

    @Override 
    public void setTitle(CharSequence title) { 
     mTitle = title; 
     getActionBar().setTitle(title); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // toggle nav drawer on selecting action bar app icon/title 
     if (mDrawerToggle.onOptionsItemSelected(item)) { 
      return true; 
     } 
     // Handle action bar actions click 
     switch (item.getItemId()) { 
     case R.id.action_settings: 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
     } 
    } 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     // Sync the toggle state after onRestoreInstanceState has occurred. 
     mDrawerToggle.syncState(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     // Pass any configuration change to the drawer toggls 
     mDrawerToggle.onConfigurationChanged(newConfig); 
    } 

    class LoadData extends AsyncTask<Void, Void, Vector<ArrayList<String>>> { 
     String Url = "http://ued.vn/rss/cong-tac-sinh-vien.rss"; 
     Vector<ArrayList<String>> data = new Vector<ArrayList<String>>(); 
     final String KEYGROUP = "Thông báo"; 

     @Override 
     protected void onPreExecute() { 
      pDialog = ProgressDialog.show(MainActivity.this, "", "Loading..."); 
      mListTitle = new ArrayList<String>(); 
      mListURL = new ArrayList<String>(); 
      super.onPreExecute(); 
     } 

     @Override 
     protected Vector<ArrayList<String>> doInBackground(Void... params) { 
      data = Utils.getDataNews(Url, KEYGROUP); 
      return data; 
     } 

     @Override 
     protected void onPostExecute(Vector<ArrayList<String>> result) { 
      if (data != null) { 
       pDialog.dismiss(); 
       mListTitle = data.get(0); 
       NewsHotAdapter adapter = new NewsHotAdapter(MainActivity.this, 
         R.layout.item_layout, mListTitle); 
       lvItemLayoutMain.setAdapter(adapter); 
      } 
      super.onPostExecute(result); 
     } 

    } 

} 

和代码在pagemain_layout.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" > 

    <FrameLayout 
     android:id="@+id/frame_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <ListView 
      android:id="@+id/list_item_main" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_gravity="start" 
      android:choiceMode="singleChoice" 
      android:dividerHeight="1dp" /> 
    </FrameLayout> 

    <ListView 
     android:id="@+id/list_slidermenu" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:background="@color/list_background" 
     android:choiceMode="singleChoice" 
     android:divider="@color/list_divider" 
     android:dividerHeight="1dp" 
     android:listSelector="@drawable/list_selector" /> 

</android.support.v4.widget.DrawerLayout> 

问题就在这里!

problem here

回答

0

请删除XML中的FrameLayout的列表视图定义android:layout_gravity="start"。你的代码应该如下,

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

    <FrameLayout 
     android:id="@+id/frame_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <ListView 
      android:id="@+id/list_item_main" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:choiceMode="singleChoice" 
      android:dividerHeight="1dp" /> 
    </FrameLayout> 

    <ListView 
     android:id="@+id/list_slidermenu" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:background="@color/list_background" 
     android:choiceMode="singleChoice" 
     android:divider="@color/list_divider" 
     android:dividerHeight="1dp" 
     android:listSelector="@drawable/list_selector" /> 

</android.support.v4.widget.DrawerLayout> 

试试这个代码,让我知道。

+0

Tks you reply。但不要为我工作:( –

+0

请参阅本教程http://www.androidhive.info/2013/11/android-sliding-menu-using-navigation-drawer/ –

+0

接受我的答案,如果它的工作。 –