【问题标题】:java.lang.nullpointer exception even if I instancied textviewjava.lang.nullpointerexception 即使我 instanceid textview
【发布时间】:2013-10-08 09:19:03
【问题描述】:

我有一个带有visibility=gone 的textview,如果某些条件为真,我想将其设置为setVisibility(View.VISIBLE)

此小部件位于 list_item 布局内,而该布局又位于 listview 内。

这是我将其设置为可见的 Java 代码:

if(sex_affiche && favori_affiche){
        mSchedule = new SimpleAdapter(this.getBaseContext(),
                listItem, R.layout.affichage_item_listview, new String[] {
                        "nom", "tel","sex","favori" }, new int[] { R.id.item_nom,
                        R.id.item_tel, R.id.item_sex_jdida, R.id.item_favori });

        listedescontacts.setAdapter(mSchedule);
        registerForContextMenu(listedescontacts);

        if(sex == null){
            Log.d("null", "yes");
            TextView sex2  = (TextView)findViewById(R.id.item_sex_jdida);
            if(sex2 == null)
            Log.d("still null", "yes");
            else
                sex2.setVisibility(View.VISIBLE);
        }


        //favori.setVisibility(View.VISIBLE);

    }

我已经在oncreate 中实例化了它,我在这个方法中重做,但它总是为空。

【问题讨论】:

  • 检查您当前的 Activity XML 是否具有带有 "@+id/item_sex_jdida" id 的 TextView?
  • 是的,如果没有,我会报错
  • @begiPass 你有它在R.layout.affichage_item_listview 不是你的活动布局所以你得到NPE
  • 请查看空指针的确切位置。许多(初级)开发人员谈论异常,但他们不知道您的日志记录准确地告诉您它在哪一行代码。我的猜测可能是listedescontacts 为空
  • 一切正常,现在我没有异常,因为我检查它是否为空,否则我在 sex2.setVisibility(View.VISIBLE) 中有异常

标签: android android-listview nullpointerexception textview


【解决方案1】:

您尝试访问的文本视图在列表中;所以你不能直接访问它们。您可以做的是从适配器覆盖 getView() 并在其中获取视图并使其可见(盲编码):

    mSchedule = new SimpleAdapter(this.getBaseContext(),
            listItem, R.layout.affichage_item_listview, new String[] {
        "nom", "tel","sex","favori" }, new int[] { R.id.item_nom,
        R.id.item_tel, R.id.item_sex_jdida, R.id.item_favori) {
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View superView = super.getView(position, convertView, parent);
            TextView sex2  = (TextView)superView.findViewById(R.id.item_sex_jdida);
            if(some_condition) {
                sex2.setVisibility(View.VISIBLE);
            } else {
                sex2.setVisibility(View.GONE);
            }
            return superView;
        }
    };

【讨论】:

    猜你喜欢
    • 2012-12-25
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 2016-12-02
    相关资源
    最近更新 更多