线程中的Android自动完成textview无法正常工作

时间:2015-03-09 11:39:39

标签: android multithreading autocomplete adapter

我正在使用自动完成的textview但是当我尝试在一个线程中执行它不起作用。这是我的代码

 Thread thread = new Thread() {
        @Override
        public void run() {
            try {
                while (true) {
                    sleep(1000);

            mPeopleList = new ArrayList<Map<String, String>>();
            PopulatePeopleList();
            mAdapternew = new SimpleAdapter(getActivity(), mPeopleList,
                    R.layout.rowone, new String[] { "Name", "Phone" },
                    new int[] { R.id.ccontName, R.id.ccontnumber });
            atvPlaces.setAdapter(mAdapternew);
            atvPlaces.setThreshold(1);

   }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    };
PopulatePeopleList()中的

;我正在接触所有联系人。 AutocompleteTextView工作正常,如果我不在列表视图中使用,但它挂起我的布局。

1 个答案:

答案 0 :(得分:0)

对UI的更改必须在主线程(UI线程)上进行,因此您应该在UI线程中执行PopulatePeopleList()之后的所有行,如下所示:

getActivity().runOnUiThread(new Runnable() {
  @Override
  public void run() {
    mAdapternew = new SimpleAdapter(getActivity(),
      mPeopleList,
      R.layout.rowone, new String[] { "Name", "Phone" },
      new int[] { R.id.ccontName, R.id.ccontnumber });
    atvPlaces.setAdapter(mAdapternew);
    atvPlaces.setThreshold(1);
  }
});

或者您可以使用AsyncTask(我更喜欢的方法),您可以将更改添加到onPostExecute()中的用户界面和PopulatePeopleList()上的doInBackground() < / p>