2014-03-27 21 views
0

我使用的是流行的SlidingMenu库,其中唯一的内容是一个列表视图。所以我尝试使用数组适配器来填充它,并使用我拥有的ArrayList,但它给了我一个NullPointer异常。所以我有一种直觉,我应该尝试使用listview将活动的布局设置为布局,并且确实如此。但是这并不能解决我的问题,因为我需要DRAWER中的listview。有人可以帮忙吗?在当前布局中填充列表视图

package josh.hutchins.frcmatchscouter2014; 

import java.util.ArrayList; 

import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.Toast; 

public class MainActivity extends Activity { 

    BlueAllianceHandler bah = new BlueAllianceHandler("sc"); 
    FileIoHandler fih = new FileIoHandler(/*maybe pass in folder path here?*/); 

    ArrayList<String> testTeams = new ArrayList<String>(); 

    ListView drawerListView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     drawerListView = (ListView) findViewById(R.id.drawerListView); 


     setupSlidingMenu(); 
     //Toast.makeText(this, bah.pullData(), Toast.LENGTH_LONG).show(); 
     pullTeamData(); 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 



    void setupSlidingMenu(){ 
     SlidingMenu menu = new SlidingMenu(this); 
     menu.setMode(SlidingMenu.LEFT); 
     menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 
     menu.setShadowWidthRes(R.dimen.shadow_width); 
     menu.setShadowDrawable(R.drawable.shadow); 
     menu.setBehindOffsetRes(R.dimen.slidingmenu_offset); 
     menu.setFadeDegree(0.35f); 
     menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); 
     menu.setMenu(R.layout.menu); 
    } 

    void pullTeamData(){ 
     //JUST FOR TESTING PURPOSES 
     testTeams.add("2655"); 
     testTeams.add("1533"); 
     testTeams.add("900"); 
     testTeams.add("4451"); 
     testTeams.add("2200"); 
     testTeams.add("3301"); 
     testTeams.add("2059"); 
     testTeams.add("5010"); 
     testTeams.add("1747"); 
     testTeams.add("2641"); 
     testTeams.add("4231"); 

     fih.createTeamRecords(testTeams); 
     ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
       this, 
       android.R.layout.simple_list_item_1, 
       testTeams); 

     drawerListView.setAdapter(arrayAdapter); 
    } 
} 
+0

你在哪里得到NPE? – zgc7009

+0

@ zgc7009对不起......应该包括那个。在最后:drawerListView.setAdapter(arrayAdapter); – Hyperion

+0

刚刚测试过,我没有收到任何错误... – zgc7009

回答

0

只要按照下列步骤操作:

1.Extend SlidingFragmentActivity在MainActivity而不只是活动。的FrameLayout型

2.Make两个布局在布局文件夹,这样

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/menu_frame" 
android:layout_width="match_parent" 
android:layout_height="match_parent" /> 

名称作为布局menu_frame,content_frame,menu_frame会认为你需要和content_frame将举行内容列表视图。

3.在您的MainActivity中,执行此操作。

SlidingMenu menu; 
@Override 
    public void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setBehindContentView(R.layout.menu_frame); 
    getSupportFragmentManager().beginTransaction() 
      .replace(R.id.menu_frame, new MenuFragment()).commit(); 

    setContentView(R.layout.content_frame); 
    getSupportFragmentManager().beginTransaction() 
      .replace(R.id.content_frame, new ShockFeedsFragment()).commit(); 

    ab=getActionBar(); 

    menu = getSlidingMenu(); 
    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); 
    menu.setShadowWidthRes(R.dimen.shadow_width); 
    menu.setShadowDrawable(R.drawable.shadow); 
    menu.setBehindOffset(200); 
    menu.setMode(SlidingMenu.LEFT_RIGHT); 
} 
  1. 现在设计布局为您的左侧菜单中,只是简单的包括线性布局的ListView和命名布局left_menu。

  2. 将名为MenuFragment片段,延长ragment类,在onCreateView方法,设置你的菜单列表视图如下图所示

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    View v=inflater.inflate(R.layout.left_menu, container, false); 
    lv=(ListView)v.findViewById(R.id.menuListView); 
    iv=(ImageView)v.findViewById(R.id.imageMenuProfile); 
    tv=(TextView)v.findViewById(R.id.textViewProfileName); 
    LeftMenuAdapter adap=new LeftMenuAdapter(getActivity(), list); 
    //lv.setAdapter(new ArrayAdapter<String>(getActivity().getApplicationContext(),R.layout.ledt_en_row,R.id.textList,new String[] {"H","R","S","B","C","W"})); 
    lv.setAdapter(adap); 
    lv.setOnItemClickListener(new MenuListListener()); 
    
    return v; 
    } 
    

我已经实现了同一个库,就是这么做的,工作完全,希望它对你也一样:)...祝你好运。