Заполните ListView наWindowFocusChanged - PullRequest
0 голосов
/ 01 марта 2012

У меня возникали проблемы при повторном нажатии на моем телефоне, которые «отключали» мой просмотр списка, что делало невозможным его нажатие. Я нашел рабочее решение, которое должно было бы снова заполнить представление списка на WindowFocusChanged, но у меня возникли проблемы с его реализацией в этом классе. Как будет выглядеть мой метод populateListView в этом классе?

public class AvailableNumbersActivity extends ListActivity // implements CallerIdListener
{
Context context;
UserController userControl;
private String[] newnumber = {""};
@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  context = this;

  userControl = new UserController(context);
  ListView lv = getListView();
  lv.setTextFilterEnabled(true);
  lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) 
    {
        newnumber[0] = ((TextView) view).getText().toString();
        new PushNumberTask().execute(newnumber);
    }
  });

  new PullNumbersTask(context).execute();

}

@Override
public void onWindowFocusChanged(boolean hasFocus)
{
    super.onWindowFocusChanged(hasFocus);

    populateListView();
}

private void populateListView() {
    // TODO Auto-generated method stub

}

private class PullNumbersTask extends AsyncTask<Void, Void, String[]>
{
    private Context ctx; 

    public PullNumbersTask(Context context)
    {
        super();
        this.ctx=context;
    }
    private ProgressDialog Dialog = new ProgressDialog(getParent());

    protected void onPreExecute() 
    {
        Dialog.setMessage("Henter tilgængelige numre..");
        Dialog.show();
    }

    @Override
    protected String[] doInBackground(Void... arg0) {
        return (userControl.GetNumbers());
    }


     protected void onPostExecute(String[] result) 
     {
         setListAdapter(new ArrayAdapter<String>(ctx, R.layout.numbers_items, result));
         Dialog.dismiss();
     }



}

1 Ответ

0 голосов
/ 01 марта 2012

Я не совсем уверен, что полностью понял ваш вопрос, но если вам нужно обновить свой ListView, вам следует сохранить свой ArrayAdapter как участника в действии и вызвать notifyDataSetChanged() для него в обработчике onWindowFocusChanged.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...