2013-10-08 28 views
0

我有一個文本視圖與visibility=gone,如果一些條件是真的,我想把它設置爲setVisibility(View.VISIBLE)java.lang.nullpointer異常,即使我instancied textview

該小部件位於listview中的list_item佈局內。

這裏是我的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實例化它,我在這個方法重做,但它總是空。

+0

查看當前活動的XML正在跟**「@ + ID/item_sex_jdida的TextView 「** ID或不? –

+0

是的,我有,如果沒有,我會有一個錯誤 – begiPass

+0

@ begiPass你有'R.layout.affichage_item_listview'它不在你的活動佈局,所以你得到NPE – Raghunandan

回答

4

您嘗試訪問的textview在列表中;所以你不能直接訪問它們。你可以做的就是從適配器覆蓋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; 
     } 
    }; 
+0

謝謝,這是我所需要的 – begiPass

相關問題