Listview не показывает результатов

#android #listview

#Android #listview

Вопрос:

Я борюсь с отображением результатов в listview. Итак, вот мое приложение вкратце:

Первый экран -> Различные действия для выполнения, и поиск является одним из них. Как только пользователь выбирает Поиск, на следующем экране появляется поле ввода и две кнопки. На основе ключевого слова input я ищу результаты и хочу показать результаты на следующем экране, но появляется мой следующий экран, но результаты не отображаются. Вот некоторый код из моего приложения

 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));

                    }

                }

            });
        }
    }
  

Макет экрана Searchresults выглядит следующим образом

 <?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>
  

Комментарии:

1. вы отладили приложение, чтобы увидеть, где происходит сбой?

2. Пожалуйста, также разместите XML для кода макета.

3. @Stephan — Я добавил макет. @Rajath — Это не сбой, я получаю данные в своем массиве и устанавливаю адаптер для listview, отображается мой экран результатов поиска, но в нем не отображаются результаты.

Ответ №1:

Я думаю, вам следует реализовать каждое нажатие кнопки в отдельном действии. это должно решить вашу проблему, попробуйте это…Дайте мне знать, если возникнут какие-либо трудности

Комментарии:

1. Я собираюсь попробовать это, но это не всегда оптимальное решение.

2. Спасибо, это помогло, я понял, что мне действительно не нужен этот исполняемый объект. У меня возникло некоторое недопонимание с Asynctask.