Java 填充不在当前布局中的Listview
我使用的是流行的滑动菜单库,其中只有一个列表视图。所以我尝试使用一个数组适配器来填充我拥有的ArrayList,但它给了我一个NullPointer异常。所以我有一种直觉,我应该尝试用listview将活动的布局设置为布局,果然,它起了作用。但这并不能解决我的问题,因为我需要抽屉中的listview。有人能帮忙吗Java 填充不在当前布局中的Listview,java,android,listview,android-listview,Java,Android,Listview,Android Listview,我使用的是流行的滑动菜单库,其中只有一个列表视图。所以我尝试使用一个数组适配器来填充我拥有的ArrayList,但它给了我一个NullPointer异常。所以我有一种直觉,我应该尝试用listview将活动的布局设置为布局,果然,它起了作用。但这并不能解决我的问题,因为我需要抽屉中的listview。有人能帮忙吗 package josh.hutchins.frcmatchscouter2014; import java.util.ArrayList; import com.jeremyfe
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);
}
}
包josh.hutchins.frcmachscouter2014;
导入java.util.ArrayList;
导入com.jeremyfeinstein.slidingmenu.lib.slidingmenu;
导入android.os.Bundle;
导入android.app.Activity;
导入android.view.Menu;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
导入android.widget.Toast;
公共类MainActivity扩展了活动{
BlueAllianceHandler bah=新的BlueAllianceHandler(“sc”);
FileIoHandler fih=newfileiohandler(/*可能在此处传入文件夹路径?*/);
ArrayList testTeams=新的ArrayList();
列表视图抽屉列表视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
抽屉列表视图=(列表视图)findViewById(R.id.抽屉列表视图);
设置滑动菜单();
//Toast.makeText(this,bah.pullData(),Toast.LENGTH_LONG.show();
pullTeamData();
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
无效设置滑动菜单(){
滑动菜单=新的滑动菜单(本);
菜单.设置模式(滑动菜单.左);
上面的menu.SetTouchMode(滑动菜单.TOUCHMODE\u全屏);
菜单.设置阴影宽度(R.尺寸.阴影宽度);
menu.setShadowDrawable(R.drawable.shadow);
menu.setBehindOffsetRes(R.尺寸滑动menu\U偏移);
菜单。设置FADEGREE(0.35f);
menu.attachToActivity(这是滑动菜单.滑动内容);
菜单.setMenu(R.layout.menu);
}
void pullTeamData(){
//只是为了测试的目的
添加(“2655”);
添加(“1533”);
添加(“900”);
添加(“4451”);
添加(“2200”);
添加(“3301”);
添加(“2059”);
添加(“5010”);
添加(“1747”);
添加(“2641”);
添加(“4231”);
fih.createTeamRecords(测试团队);
ArrayAdapter ArrayAdapter=新的ArrayAdapter(
这
android.R.layout.simple\u list\u item\u 1,
测试小组);
drawerListView.setAdapter(arrayAdapter);
}
}
只需遵循以下步骤:
1.在MainActivity中扩展SlidingFragmentActivity,而不仅仅是Activity
2.在布局文件夹中制作两个FrameLayout类型的布局,如下所示
<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" />
@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;
}
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//TODO自动生成的方法存根
视图v=充气机。充气(R.layout.left_菜单,容器,错误);
lv=(ListView)v.findViewById(R.id.menuListView);
iv=(ImageView)v.findViewById(R.id.ImageMenupFile);
tv=(TextView)v.findViewById(R.id.textViewProfileName);
LeftMenuAdapter adap=新的LeftMenuAdapter(getActivity(),list);
//setAdapter(新的ArrayAdapter(getActivity().getApplicationContext(),R.layout.ledt_en_行,R.id.textList,新字符串[]{“H”,“R”,“S”,“B”,“C”,“W”});
低压设置适配器(adap);
lv.setOnItemClickListener(新的MenuListListener());
返回v;
}
我已经实现了相同的库,以这种方式实现,工作完美,希望它也能为您实现:)。。。祝你好运。你在哪里得到NPE?@zgc7009对不起。。。应该包括这一点。最后:drawerListView.setAdapter(arrayAdapter);刚刚测试过,我没有发现任何错误。。。
@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;
}