0

我想創建一個Google使用的搜索視圖。爲此,我創建了以下XML佈局,它基本上是屏幕上部的搜索欄和按鈕,以及底部的ListView。從定期活動中定義的ListView中顯示內容Android

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/LinearLayoutSearch" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:background="#FF394952"> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" > 
     <EditText android:layout_height="wrap_content" android:id="@+id/searchTextBar" android:layout_width="wrap_content" android:layout_weight="1"> 
      <requestFocus></requestFocus> 
     </EditText> 
     <Button android:layout_height="fill_parent" android:layout_width="wrap_content" android:id="@+id/searchButton" android:text="Buscar"></Button> 
    </LinearLayout> 

    <ListView 
     android:id="@+id/searchResultList" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:layout_alignParentBottom="true" 
     android:layout_weight="1.0" /> 

</LinearLayout> 

這是textViewResource的代碼,它構造一個ArrayAdapter要求:

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

現在,這是該活動的代碼。到目前爲止,我只想顯示內容的視圖(這就是爲什麼我現在使用靜態字符串數組)。

public class SearchActivity extends Activity{ 

    static final String[] COUNTRIES = new String[] { 
     "Afghanistan", "Albania", "Algeria"}; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.searchview); 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.list_item, COUNTRIES); 
     ListView lv = (ListView)this.findViewById(R.id.searchResultList); 
     lv.setAdapter(adapter); 
     lv.setTextFilterEnabled(true); 

      lv.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
       // When clicked, show a toast with the TextView text 
       Toast.makeText(getApplicationContext(), ((TextView) view).getText(), 
        Toast.LENGTH_SHORT).show(); 
      } 
      }); 
    } 
} 

但是,當我運行該活動時,我看到搜索欄,但它不顯示ListView。

我試着改變SearchActivity的擴展到ListActivity,但程序只是崩潰時,我試圖啓動它。我也意識到Search Interface的存在,但我只是想看到這個特定的方法工作。

爲什麼它不顯示ListView的內容?有沒有辦法來解決這個問題?

在此先感謝

回答

1

如果你打算使用ListActivity,你應該知道ListActivity已經有一個ListView實例。您需要調用其setListAdapter方法來爲其ListView設置適配器,而不是實例化自己的ListView並在其上設置適配器。您可以調用getListView來獲取ListActvity的ListView上的句柄,然後設置點擊監聽器。

+0

Michaelg:謝謝你的回答!我很清楚ListActivity已經有一個ListView實例。但是,我怎麼能將適配器重定向到我創建的ListView?因爲如果我只是跳過setContentView並按照你所說的做,它就可以正常工作。 –

0

如果你想擴展ListActivity,那麼你的ID必須爲@android:id/list一個ListView。更改您的ListView的id,這應該在擴展ListActivity時修復崩潰。

+0

好的,我做到了,當擴展ListActivity時它確實不會崩潰。但是,我仍然看不到這些國家的名單。然而,如果我在onCreate方法的開始處註釋setContentView行,我可以看到列表正好,所以我猜它是xml文件配置的一部分。它如何工作?感謝無論如何幫助aromero! :D –