2014-06-25 3 views
0

Я пытаюсь реализовать ListView внутри RelativeLayout. Однако, когда я вызываю функцию setAdapter(), он утверждает, что ListView не существует (но ошибок компиляции нет).Android ListView не найден, в результате чего NullPointerException или ресурс не найден

Ниже приведен код Java:

FrameLayout framecxpesq = (FrameLayout)findViewById(R.id.layoutSearch); 
     ViewGroup janelapesquisa = (ViewGroup)getLayoutInflater().inflate(R.layout.janela_multisearch, null); 
     ListView listapesquisa = (ListView)findViewById(R.id.listViewOcorrencias); 
     HashMap<String,String> mapaOcorrencias1 = new HashMap<String,String>(); 
     mapaOcorrencias1.put("pagina", "pag 1"); 
     mapaOcorrencias1.put("resultados", "3 results found"); 
     HashMap<String,String> mapaOcorrencias2 = new HashMap<String,String>(); 
     mapaOcorrencias2.put("pagina", "pag 7"); 
     mapaOcorrencias2.put("resultados", "15 resultados encontrados"); 
     HashMap<String,String> mapaOcorrencias3 = new HashMap<String,String>(); 
     mapaOcorrencias3.put("pagina", "pag 9"); 
     mapaOcorrencias3.put("resultados", "10 asgsdgsdfge3333"); 
     ArrayList<HashMap<String,String>> listamapas = new ArrayList<HashMap<String,String>>(); 
     listamapas.add(mapaOcorrencias1); 
     listamapas.add(mapaOcorrencias2); 
     listamapas.add(mapaOcorrencias3); 


     if(tv_pesquisa.isSelected()){ 
      tv_pesquisa.setSelected(false); 
      tv_pesquisa.setImageResource(R.drawable.search_icon); 
      framecxpesq.removeAllViews(); 
     } 
     else{ 
      tv_pesquisa.setSelected(true); 
      tv_pesquisa.setImageResource(R.drawable.search_icon_sel); 
      framecxpesq.addView(janelapesquisa); 
      listapesquisa.setAdapter(new SimpleAdapter(this,listamapas,R.layout.linha_ocorrencia,new String[]{"pagina","resultados"},new int[]{R.id.linha_item,R.id.linha_subitem})); 

     } 

Ниже код XML. Один файл XML определяет janela_multisearch, другой содержит FrameLayout layoutSearch, в который вставлен janela_multisearch.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="350dp" 
android:layout_height="320dp" 
android:background="@drawable/rounded_corner_dialog" > 

<include 
    android:id="@+id/include1" 
    android:layout_width="250dp" 
    android:layout_height="50dp" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginBottom="5dp" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="5dp" 
    android:layout_marginTop="5dp" 
    layout="@layout/caixapesquisa" /> 

<TextView 
    android:id="@+id/limparpag" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="15dp" 
    android:layout_marginBottom="15dp" 
    android:text="@string/clean_page_selected" 
    android:textColor="@color/cinza_escuro" 
    android:textSize="20dp" /> 

<TextView 
    android:id="@+id/cancelar" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/include1" 
    android:layout_marginBottom="12.5dp" 
    android:layout_toRightOf="@+id/include1" 
    android:text="@string/cancel" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:textColor="@color/cinza_escuro" /> 

<ListView 
    android:id="@+id/listViewOcorrencias" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/limparpag" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_below="@+id/include1" 
    android:background="@color/WHITE" > 

</ListView> 

Проблема, кажется, что linhapesquisa не был найден ... Что это за ошибка?

ответ

0

Вам нужно получить ListView из его родительского представления, поскольку макет, где он определен, не задан как макет Activity. Только вызов findViewById() будет выполнять поиск только в макете Activity.

ViewGroup janelapesquisa = (ViewGroup)getLayoutInflater().inflate(R.layout.janela_multisearch, null); 
ListView listapesquisa = (ListView) janelapesquisa.findViewById(R.id.listViewOcorrencias); 

То же самое с другими видами, которые находятся в этом макете.

 Смежные вопросы

  • Нет связанных вопросов^_^