2011-04-21 93 views
0

我很努力地在列表视图中显示结果。所以这里是我的应用简介:列表视图不显示结果

第一个屏幕 - >执行和搜索的不同活动就是其中之一。一旦用户选择搜索,下一个屏幕就有一个输入框和两个按钮。根据输入关键字,我搜索结果并希望在下一个屏幕上显示结果,但出现下一个屏幕,但结果不显示。下面是我的应用程序的一些代码

public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.searchcriteria); 

     txtSearch = (EditText)findViewById(R.id.searchstring); 
     btnCurrentLoc = (Button)findViewById(R.id.currentlocation); 

     btnCurrentLoc.setOnClickListener(new Button.OnClickListener(){ 
      public void onClick(View view){ 
       setContentView(R.layout.searchresults); 
       String keyword = txtSearch.getText().toString(); 
       performSearch(keyword);       
      } 
     }); 
    } 

private void performSearch(String searchterm){ 
     progressDialog = ProgressDialog.show(Search.this, "Please wait......", "Retrieving data ....",true,true); 
     PerformSearchTask task = new PerformSearchTask(); 
     task.execute(searchterm); 
     progressDialog.setOnCancelListener(new CancelTaskOnCancelListener(task));  
    } 

private class PerformSearchTask extends AsyncTask<String, Void, List<Event>>{  

     @Override 
     protected List<Event> doInBackground(String... arg0) { 
      String query = arg0[0]; 
      return eventGetter.find(query); 
     } 

     protected void onPostExecute(final List<Event> result){ 
      runOnUiThread(new Runnable(){ 

       public void run() { 
        if(progressDialog != null){ 
         progressDialog.dismiss(); 
         progressDialog = null; 
        } 
        if(result != null){ 
         Vector<String> ve = new Vector<String>(); 
         for(Event event: result){ 
          ve.add(event.title + "\n" + event.eventlocation + "\t" + event.eventdate); 
         } 
         String[] eventArray = new String[ve.size()]; 
         for(int i = 0; i < ve.size(); i++){ 
          eventArray[i] = ve.get(i); 
         } 

         ListView lv = (ListView)findViewById(R.id.list); 
         lv.setAdapter(new ArrayAdapter<String>(Search.this,R.layout.searchresults,eventArray)); 

        } 

       } 

      }); 
     } 
    } 

SearchResult所屏幕布局如下

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView 
android:id="@+id/resultsofsearch" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
xmlns:android="http://schemas.android.com/apk/res/android" 
> 
<RelativeLayout 
android:id="@+id/relativelayout_1" 
android:layout_width="320px" 
android:layout_height="332px" 
xmlns:android="http://schemas.android.com/apk/res/android" 
> 
<Button 
android:id="@+id/back" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Back" 
android:layout_alignParentTop="true" 
android:layout_alignParentLeft="true" 
> 
</Button> 
<Button 
android:id="@+id/info" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Info" 
android:layout_alignParentTop="true" 
android:layout_alignParentRight="true" 
> 
</Button> 

<ListView 
android:id="@+id/list" 
android:layout_width="wrap_content" 
android:layout_height="0dip" 
android:layout_weight="1.0" 
android:layout_below="@+id/back" 
android:layout_centerHorizontal="true" 
> 
</ListView> 
</RelativeLayout> 
</ScrollView> 
+0

你有没有调试应用程序,看看它失败了? – rajath 2011-04-21 05:01:49

+0

请同时发布布局代码的XML。 – Stephan 2011-04-21 05:14:35

+0

@Stephan - 我添加了布局。 @Rajath - 它没有失败,我得到我的数组中的数据,我设置适配器为listview,我的屏幕searchresults显示,但没有结果显示在那。 – yogsma 2011-04-21 18:21:46

回答

2

我觉得你应该实现在单独活动的每个按钮的点击。它应该解决你的问题试试这个......让我知道是否有任何困难发生

+0

我要试试这个,但这并不总是最佳的解决方案。 – yogsma 2011-04-21 18:22:22

+0

感谢它帮助,我发现我真的不需要那个可运行的对象。我对Asynctask有些误解。 – yogsma 2011-04-22 16:13:08