検索アクティビティを作成しようとしています。レイアウトにはEditText
(検索クエリを入力するため) Button
& ListView
(検索結果を表示するため) が含まれます。search_layout.xml (検索ボックス & を表示するためListView
) は次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<EditText
android:id="@+id/editText_search"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/search_practice" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_search"
android:onClick="searchPractice" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/praclist"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
</LinearLayout>
リスト項目 list_items.xml のレイアウトは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- Name Label -->
<TextView
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#43bd00"
android:textSize="16sp"
android:textStyle="bold"
android:paddingTop="6dip"
android:paddingBottom="2dip" />
<!-- Description label -->
<TextView
android:id="@+id/city"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#acacac"
android:paddingBottom="2dip">
</TextView>
<TextView
android:id="@+id/email"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#acacac"
android:paddingBottom="2dip">
</TextView>
<!-- Linear layout for cost and price Cost: Rs.100 -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<!-- Cost Label -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#5d5d5d"
android:gravity="left"
android:textStyle="bold"
android:text="Phone: " >
</TextView>
<!-- Price Label -->
<TextView
android:id="@+id/phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#acacac"
android:textStyle="bold"
android:gravity="left">
</TextView>
</LinearLayout>
</LinearLayout>
</LinearLayout>
ボタンのクリック (searchBtnClick) で、メソッド doMySearch を呼び出しています。
public void searchBtnClick(View view){
-------
------
ListAdapter adapter = doSearch(query);
ListView pracListView = (ListView) findViewById(R.id.praclist);
PracListView.setAdapter(adapter);
return;
}
private ListAdapter doSearch(String query){
ListAdapter adapter = null;
String url = "https://mywebservice.com/apps/api/v1/search/practices?val="+query+"&by=nam";
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet(url);
String jsonResponsse = null;
try{
HttpResponse httpResponse = httpClient.execute(httpGet, localContext);
HttpEntity httpEntity = httpResponse.getEntity();
jsonResponsse = getASCIIContentFromEntity(httpEntity);
Gson gson = new Gson();
PracticesByName practicesByName = gson.fromJson(jsonResponsse,PracticesByName.class);
ArrayList<Practices> practiceList = (ArrayList<Practices>)practicesByName.getPractices();
for(int i=0 ; i < practiceList.size() ; i ++){
Object a = practiceList.get(i);
System.out.println(a.getClass() + " " + a.toString());
Practices aPractice = practiceList.get(i);
HashMap<String, String> aMap = new HashMap<String, String>();
aMap.put(TAG_NAME, aPractice.getName());
aMap.put(TAG_CITY, aPractice.getCity());
aMap.put(TAG_EMAIL, aPractice.getEmail());
aMap.put(TAG_PHONE, aPractice.getPhone());
searchResultList.add(aMap);
}
adapter = new SimpleAdapter(this, searchResultList,
R.layout.list_item_prac_search,
new String[] { TAG_NAME, TAG_CITY, TAG_EMAIL, TAG_PHONE}, new int[] {
R.id.name, R.id.city, R.id.email, R.id.phone});
//pracListView.setAdapter(adapter);
}catch (Exception e){
System.out.println("Exception while getting serach for practice");
e.printStackTrace();
}
return adapter;
}
コードは正常に実行されています。Web サービスから検索結果を取得しています。しかし、以下のリストは表示されません。私が何を台無しにしているのか分かりますか?