我创建了一个适配器,并使用Google Places API显示地址。
我致电notifyDataSetChanged();
来更新列表。
但是当我输入TextView
时,列表不会更改。
adapter = new SelectAddressAdapter(this,android.R.layout.simple_list_item_1, addressList);
addressListView.setAdapter(adapter);
addresseEditText.addTextChangedListener(new TextWatcher() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
GoogleAPIRequestHandler handler = new GoogleAPIRequestHandler();
String date= handler.execute(input).get();
addressList = new ArrayList<AddressList>();
JSONObject jsonObj = new JSONObject(date);
JSONArray predsJsonArray = jsonObj.getJSONArray("predictions");
for (int i = 0; i < predsJsonArray.length(); i++) {
AddressList a = new AddressList();
String addressJson = predsJsonArray.getJSONObject(i).toString();
a.Deserialize(addressJson);
addressList.add(a);
}
adapter.notifyDataSetChanged();;
答案 0 :(得分:0)
更改
for (int i = 0; i < predsJsonArray.length(); i++) {
AddressList a = new AddressList();
String addressJson = predsJsonArray.getJSONObject(i).toString();
a.Deserialize(addressJson);
addressList.add(a);
要
for (int i = 0; i <= predsJsonArray.length(); i++) {
if(i<predsJsonArray.length())
{
AddressList a = new AddressList();
String addressJson = predsJsonArray.getJSONObject(i).toString();
a.Deserialize(addressJson);
addressList.add(a);
}
else
{
adapter.notifyDataSetChanged();;
}
答案 1 :(得分:0)
我认为你需要实现TextWatcher的方法,你需要添加runOnUiThread方法
addresseEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
runOnUiThread(new Runnable() {
@Override
public void run() {
GoogleAPIRequestHandler handler = new GoogleAPIRequestHandler();
String date= handler.execute(input).get();
addressList = new ArrayList<AddressList>();
JSONObject jsonObj = new JSONObject(date);
JSONArray predsJsonArray = jsonObj.getJSONArray("predictions");
for (int i = 0; i < predsJsonArray.length(); i++) {
AddressList a = new AddressList();
String addressJson = predsJsonArray.getJSONObject(i).toString();
a.Deserialize(addressJson);
addressList.add(a);
}
adapter.notifyDataSetChanged();
}
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});