我正在使用自动完成的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工作正常,如果我不在列表视图中使用,但它挂起我的布局。
答案 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>