Java 设置适配器空指针
我已经尝试解决一个问题几个小时了,但是我没能解决它。我尝试为可扩展列表视图设置一个适配器,但是我遇到了这个错误。谢谢 “尝试在空对象引用上调用虚拟方法'void android.widget.ExpandableListView.setAdapter(android.widget.ExpandableListAdapter)'” 主要活动Java 设置适配器空指针,java,android,Java,Android,我已经尝试解决一个问题几个小时了,但是我没能解决它。我尝试为可扩展列表视图设置一个适配器,但是我遇到了这个错误。谢谢 “尝试在空对象引用上调用虚拟方法'void android.widget.ExpandableListView.setAdapter(android.widget.ExpandableListAdapter)'” 主要活动 public class MainActivity extends AppCompatActivity implements View.OnClickLis
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Button b1;
private ResideMenu resideMenu;
private Context mContext;
private ResideMenuItem itemAnasayfa;
private ResideMenuItem itemRastgele;
private ResideMenuItem itemEncok;
private ResideMenuItem itemTarifyaz;
private ExpandableListView listView;
private ExpandableListAdapter listAdapter;
private List<String> listDataHeader;
private HashMap<String,List<String>> listHash;
@Override
protected void onCreate(Bundle savedInstanceState) {
listView=(ExpandableListView)findViewById(R.id.exp2);
initData();
listAdapter=new com.yeni.ExpandableListAdapter(this,listDataHeader,listHash);
listView.setAdapter(listAdapter);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = this;
setUpMenu();
if (savedInstanceState == null) {
changeFragment(new F_ana_sayfa());
}
}
private void initData() {
listDataHeader=new ArrayList<>();
listHash=new HashMap<>();
listDataHeader.add("et");
listDataHeader.add("tavuk");
listDataHeader.add("sebze");
listDataHeader.add("diger");
List<String> l_et=new ArrayList<>();
l_et.add("kemikli");
l_et.add("kuşbaşı");
List<String> l_tavuk=new ArrayList<>();
l_tavuk.add("bonfile");
l_tavuk.add("but");
l_tavuk.add("bütün tavuk");
List<String> l_sebze=new ArrayList<>();
l_sebze.add("patates");
l_sebze.add("biber");
l_sebze.add("kabak");
l_sebze.add("patlıcan");
List<String> l_diger=new ArrayList<>();
l_diger.add("tuz");
l_diger.add("yağ");
l_diger.add("kekik");
listHash.put(listDataHeader.get(0),l_et);
listHash.put(listDataHeader.get(1),l_tavuk);
listHash.put(listDataHeader.get(2),l_sebze);
listHash.put(listDataHeader.get(3),l_diger);
}
private void setUpMenu() {
resideMenu = new ResideMenu(this);
resideMenu.setBackground(R.drawable.menu_background);
resideMenu.attachToActivity(this);
resideMenu.setMenuListener(menuListener);
resideMenu.setScaleValue(0.6f);
//create menu items;
itemAnasayfa = new ResideMenuItem(this, R.drawable.icon_home, "Ana Sayfa");
itemRastgele = new ResideMenuItem(this, R.drawable.icon_profile, "Random tarif bul");
itemEncok = new ResideMenuItem(this, R.drawable.icon_calendar, "En cok begenilenler");
itemTarifyaz = new ResideMenuItem(this, R.drawable.icon_settings, "tarif Yaz");
itemAnasayfa.setOnClickListener(this);
itemRastgele.setOnClickListener(this);
itemEncok.setOnClickListener(this);
itemTarifyaz.setOnClickListener(this);
resideMenu.addMenuItem(itemAnasayfa, ResideMenu.DIRECTION_LEFT);
resideMenu.addMenuItem(itemRastgele, ResideMenu.DIRECTION_LEFT);
resideMenu.addMenuItem(itemEncok, ResideMenu.DIRECTION_RIGHT);
resideMenu.addMenuItem(itemTarifyaz, ResideMenu.DIRECTION_RIGHT);
findViewById(R.id.title_bar_left_menu).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
resideMenu.openMenu(ResideMenu.DIRECTION_LEFT);
}
});
findViewById(R.id.title_bar_right_menu).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
resideMenu.openMenu(ResideMenu.DIRECTION_RIGHT);
}
});
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return resideMenu.dispatchTouchEvent(ev);
}
@Override
public void onClick(View view) {
if (view == itemAnasayfa) {
changeFragment(new F_ana_sayfa());
} else if (view == itemRastgele) {
changeFragment(new F_rastgele_tarif());
} else if (view == itemEncok) {
changeFragment(new F_encok_beg());
} else if (view == itemTarifyaz) {
changeFragment(new F_tarif_yaz());
}
else
changeFragment(new F_ana_sayfa());
resideMenu.closeMenu();
}
private ResideMenu.OnMenuListener menuListener = new ResideMenu.OnMenuListener() {
@Override
public void openMenu() {
Toast.makeText(mContext, "Menu is opened!", Toast.LENGTH_SHORT).show();
}
@Override
public void closeMenu() {
Toast.makeText(mContext, "Menu is closed!", Toast.LENGTH_SHORT).show();
}
};
private void changeFragment(Fragment targetFragment) {
resideMenu.clearIgnoredViewList();
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.main_fragment, targetFragment, "fragment")
.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.commit();
}
public ResideMenu getResideMenu(){
return resideMenu;}
}
public类MainActivity扩展AppCompatActivity实现View.OnClickListener{
按钮b1;
私人住宅;
私有上下文;
私人住宅项目;
私人住宅项目;
私人住宅项目编码;
私人住宅项目;
私有可扩展listView listView;
私有可扩展listAdapter listAdapter;
私有列表listDataHeader;
私有哈希映射列表哈希;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
listView=(ExpandableListView)findViewById(R.id.exp2);
initData();
listAdapter=new com.yeni.ExpandableListAdapter(这个,listDataHeader,listHash);
setAdapter(listAdapter);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext=这个;
设置菜单();
如果(savedInstanceState==null){
changeFragment(新F_ana_sayfa());
}
}
私有void initData(){
listDataHeader=新的ArrayList();
listHash=新的HashMap();
添加(“et”);
添加(“tavuk”);
添加(“sebze”);
添加(“diger”);
List l_et=new ArrayList();
l_et.add(“kemikli”);
lşu et.add(“kuşbaşı”);
List l_tavuk=new ArrayList();
l_tavuk.add(“bonfile”);
l_tavuk.添加(“但是”);
l_tavuk.加上(“bütün tavuk”);
List l_sebze=new ArrayList();
l_sebze.添加(“patates”);
l_sebze.添加(“biber”);
l_sebze.添加(“卡巴克”);
l_sebze.添加(“patlıcan”);
List l_diger=new ArrayList();
l_diger.添加(“tuz”);
l_diger.加上(“雅”);
l_diger.添加(“kekik”);
put(listDataHeader.get(0),l_et);
put(listDataHeader.get(1),l_tavuk);
put(listDataHeader.get(2),l_sebze);
put(listDataHeader.get(3),l_diger);
}
私有void设置菜单(){
resideMenu=新的resideMenu(本);
住宅设置背景(R.可绘制菜单背景);
住户附加活动(本);
setMenuListener住宅(menuListener);
剩余量设定值(0.6f);
//创建菜单项;
itemAnasayfa=新住宅项目(此,R.drawable.icon_home,“Ana Sayfa”);
itemRastgele=新剩余物UITEM(这是R.drawable.icon_配置文件,“随机tarif bul”);
itemEncok=new ResidementUITEM(这是R.drawable.icon_日历,“En cok begenilener”);
ItemTarifizaz=新的剩余物UITEM(这个,R.drawable.icon_设置,“tarif Yaz”);
itemAnasayfa.setOnClickListener(这个);
itemRastgele.setOnClickListener(这个);
itemEncok.setOnClickListener(此);
itemtarifizaz.setOnClickListener(this);
resideMenu.addMenuItem(itemAnasayfa,resideMenu.DIRECTION_左);
resideMenu.addMenuItem(itemRastgele,resideMenu.DIRECTION_左);
resideMenu.addMenuItem(项目编码,resideMenu.DIRECTION\u RIGHT);
剩余添加菜单项(项目Tarifizaz,剩余方向右);
findViewById(R.id.title\u bar\u left\u菜单){
@凌驾
公共void onClick(视图){
剩余菜单(剩余方向左);
}
});
findviewbyd(R.id.title\u bar\u right\u菜单){
@凌驾
公共void onClick(视图){
剩余菜单(剩余方向右);
}
});
}
@凌驾
公共布尔dispatchTouchEvent(MotionEvent ev){
返回剩余量u.dispatchTouchEvent(ev);
}
@凌驾
公共void onClick(视图){
如果(视图==itemAnasayfa){
changeFragment(新F_ana_sayfa());
}else if(视图==itemRastgele){
changeFragment(新的F_rastgele_tarif());
}else if(视图==项目编码){
changeFragment(新的F_encok_beg());
}else if(视图==ItemTarifizaz){
changeFragment(新F_tarif_yaz());
}
其他的
changeFragment(新F_ana_sayfa());
resideMenu.closeMenu();
}
private ResideMenu.onmenustener menuListener=new ResideMenu.onmenustener(){
@凌驾
公共菜单(){
Toast.makeText(mContext,“菜单已打开!”,Toast.LENGTH\u SHORT.show();
}
@凌驾
公共关闭菜单(){
Toast.makeText(mContext,“菜单已关闭!”,Toast.LENGTH\u SHORT.show();
}
};
私有void changeFragment(片段targetFragment){
resideMenu.clearIgnoredViewList();
getSupportFragmentManager()
.beginTransaction()
.替换(R.id.main_片段,targetFragment,“片段”)
.setTransitionStyle(FragmentTransaction.Transition\u FRAGMENT\u FADE)
.commit();
}
公共住宅{
返回剩余量u;}
}
适配器类
public class ExpandableListAdapter extends BaseExpandableListAdapter {
private Context cont;
private List<String> listDataHeader;
private HashMap<String,List<String>> listHashMap;
public ExpandableListAdapter(Context cont, List<String> listDataHeader, HashMap<String, List<String>> listHashMap) {
this.cont = cont;
this.listDataHeader = listDataHeader;
this.listHashMap = listHashMap;
}
@Override
public int getGroupCount() {
return listDataHeader.size();
}
@Override
public int getChildrenCount(int i) {
return listHashMap.get(listDataHeader.get(i)).size();
}
@Override
public Object getGroup(int i) {
return listDataHeader.get(i);
}
@Override
public Object getChild(int i, int i1) { // i=group position i=item position
return listHashMap.get(listDataHeader.get(i)).get(i1);
}
@Override
public long getGroupId(int i) {
return i;
}
@Override
public long getChildId(int i, int i1) {
return i1;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
String headerTitle=(String)getGroup(i);
if (view==null){
LayoutInflater inflater1=(LayoutInflater)this.cont.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view=inflater1.inflate(R.layout.list_group,null);
}
TextView lblHeader=(TextView)view.findViewById(R.id.header);
lblHeader.setTypeface(null, Typeface.BOLD);
lblHeader.setText(headerTitle);
return view;
}
@Override
public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
final String childText=(String)getChild(i,i1);
if (view==null){
LayoutInflater inflater1=(LayoutInflater)this.cont.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view=inflater1.inflate(R.layout.list_item,null);
}
TextView txtListChild=(TextView)view.findViewById(R.id.list_item);
txtListChild.setText(childText);
return view;
}
@Override
public boolean isChildSelectable(int i, int i1) {
return true;
}
}
公共类ExpandableListAdapter扩展了BaseExpandableListAdapter{
私人语境控制;
私有列表listDataHeader;
私有HashMap列表HashMap;
公共ExpandableListAdapter(上下文控制、列表listDataHeader、HashMap listHashMap){
this.cont=cont;
this.listDataHeader=listDataHeader;
this.listHashMap=listHashMap;
}
@凌驾
public int getGroupCount(){
返回listDataHeader.size();
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@android:color/white"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ExpandableListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/exp2" />
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/layout_top">
<!--<ImageView-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="3dp"-->
<!--android:background="#2ea3fe"/>-->
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:layout_width="28dp"
android:layout_height="28dp"
android:background="@drawable/titlebar_menu_selector"
android:id="@+id/title_bar_left_menu"
android:layout_gravity="left|center_vertical"
android:layout_marginLeft="10dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="7dp"
android:text="Yemek Do"
android:textSize="24sp"
android:layout_gravity="center"
android:textColor="?attr/actionModeSplitBackground" />
<Button
android:layout_width="28dp"
android:layout_height="28dp"
android:background="@drawable/titlebar_menu_selector"
android:id="@+id/title_bar_right_menu"
android:layout_gravity="right|center_vertical"
android:layout_marginRight="10dp"/>
</FrameLayout>
<View
android:layout_width="match_parent"
android:layout_height="5dp"
android:background="#bcb8b8"/>
</LinearLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/main_fragment">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="107dp"
android:layout_marginStart="107dp"
android:layout_marginTop="188dp"
android:id="@+id/button2" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignRight="@+id/button2"
android:layout_alignEnd="@+id/button2"
android:layout_marginTop="78dp"
android:id="@+id/button3" />
</RelativeLayout>
</FrameLayout>
</LinearLayout>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = this;
setUpMenu();
if (savedInstanceState == null) {
changeFragment(new F_ana_sayfa());
}
listView=(ExpandableListView)findViewById(R.id.exp2);
initData();
listAdapter=new com.yeni.ExpandableListAdapter(this,listDataHeader,listHash);
listView.setAdapter(listAdapter);
}
listView=(ExpandableListView)findViewById(R.id.exp2);
initData();
listAdapter=new com.yeni.ExpandableListAdapter(this,listDataHeader,listHash);
listView.setAdapter(listAdapter);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(ExpandableListView)findViewById(R.id.exp2);
initData();
listAdapter=new
com.yeni.ExpandableListAdapter(this,listDataHeader,listHash);
listView.setAdapter(listAdapter);