当前位置: 首页 > 知识库问答 >
问题:

设置适配器空指针

年风华
2023-03-14

我已经尝试解决一个问题几个小时了,但我没有解决它。我尝试为可扩展列表视图设置适配器,但我接受了这个错误。多谢了。“尝试对空对象引用调用虚拟方法”void Android.Widget.ExpandableListView.SetAdapter(Android.Widget.ExpandableListAdapter)“”

 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 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;
    }
}

   
   
    <?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>
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:text="TextView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/header" />
    </LinearLayout>

list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:text="TextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/list_item" />
</LinearLayout>

错误日志


共1个答案

匿名用户

你在做什么:

 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);

在setContentView出错之前初始化listview对象。应该是这样的

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);

相关问题


  • 在 FXML 文件中设置自定义控件的按钮“onAction”方法?
  • AngularJS-nested ng-使用select/option重复,获取/设置所选值
  • 将 Keycloak 适配器与 Wildfly 26 一起使用不提供“KEYCLOAK”作为机制
  • 域模式下的Keycloak JBoss EAP7适配器
  • 设置ADuser和“用户下次登录时必须更改密码”的问题
  • 在服务器上设置SSH身份验证时,Kerberos keytab文件的原因是什么?
  • CryptoJs 的解密方法返回一个空字符串
  • fx:id="grid "在控制器中保持为空
  • JavaFX 第二次启动模式对话框时出现“已设置为另一个场景的根”异常
  • JavaFX如何从被调用控制器设置调用控制器中标签的文本
  • 为 fxml 中的所有子节点设置边距
  • Eclipse/STS中的Gradle项目有可能解决同一个工作空间中其他Gradle项目的依赖关系吗?
  • 如何在JavaFX中设置TabPane下拉菜单的样式
  • AWS betalk 中 docker 容器中的 JVM 内存设置
  • GitHub Action CI-下载并设置JDK
  • 空闲时Eclipse中的高CPU使用率
  • 在 Gradle Spring Boot Hibernate 项目中设置 LiquiBase
  • 在Windows中设置默认堆大小[重复]
  • 使用GCP证书颁发机构服务的证书设置Kafka mTLS时出现的问题
  • 在单台机器和配置上设置kafka集群

共有3个答案

文心思
2023-03-14
热门标签
明星剑
2023-03-14
相关问题
田嘉澍
2023-03-14

你在做什么:

 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);

在setContentView出错之前初始化listview对象。应该是这样的

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);
 类似资料:
  • 我用两个项目做了一个微调器,我想将文本颜色更改为白色,所以我做了一个xml... 我尝试这样做来设置适配器.... 但它给了我一个错误!它说在 spinner.setAdapter() 行上有一个空指针异常。我看到人们这样做的其他问题,它实际上是有效的,所以我不知道发生了什么。这是微调器的代码.... 最初的问题已修复,但现在它没有显示任何条目。

  • 问题内容: 我在尝试启动包含的活动时花了一段时间。 在适配器类的方法中,当调用a 的函数时会发生异常。 下面的代码是我的适配器类: 如您所见,我已经将字符串记录在logcat中,并且工作正常,但是下一行会出错。这是logcat的输出: 日志显示该错误发生在我的适配器类的这一行: 我非常感谢您的帮助。 问题答案: 您已经知道问题出在哪里了! 导致NPE的原因是。这意味着线 无法找到TextView。

  • 我有两个片段:(1)图书馆片段,(2)书片段 图书馆碎片通过RecyclerView显示所有可用的书籍。用户可以在每个RecyclerView项目上设置标签,这将把LiveData设置为相应的图书。同时,书籍片段将被打开,并显示该书的内容。 我在ViewHolder类中设置了一个onClickListener,它位于图书馆片段的RecyclerView. Adapter中。因此,当单击一个项目时,

  • 我为后台服务实现了一个AsyncTask来执行对数据库的查询,该查询速度非常快,不超过2-3秒。AsyncTask中的ProgressDialog有时很难检测到。 我的问题是,当任务完成并且我检索到游标时,当我将适配器设置到RecyclerView时,流程会冻结我的UI几秒钟,直到数据设置完毕。当我执行搜索(新查询,与获取所有行相同的过程,但行数较少),并替换光标以更新数据时,也会发生这种情况。

  • 我在一个片段中制作了一个listview列表视图的适配器有一个空指针异常,但Arraylist和适配器不为空。 错误:lvElevator不能为null 错误是针对以下行的 电梯。适配器=EAdapter

  • 问题内容: 我通过create-react-app创建了一个新的React应用程序,我想向在该应用程序中创建的名为“ MessageBox”的组件编写单元测试。这是我编写的单元测试: 我还在“ src”文件夹下添加了一个名为“ setupTests.js”的文件,其内容为: 我通过以下方式运行它: npm测试 我得到了错误: 酶内部错误:酶希望配置适配器,但找不到。要配置适配器,您应该致电 你知道