我正在尝试在RelativeLayout中实现ListView。但是,当我调用setAdapter()函数时,它声称ListView不存在(但没有编译错误)。
以下是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 :(得分:0)
您需要从其父View获取ListView,因为定义它的布局未设置为Activity的布局。只有调用findViewById()
才会搜索活动的布局。
ViewGroup janelapesquisa = (ViewGroup)getLayoutInflater().inflate(R.layout.janela_multisearch, null);
ListView listapesquisa = (ListView) janelapesquisa.findViewById(R.id.listViewOcorrencias);
与此布局中的其他视图相同。