서버에서 값을 받아오는건 확인했는데 저기 Asynctask에서 추가한 항목이 검색기능에 잡히지를 않네요..ㅠㅠ onCreate에 list.add("항목") 이런식으로 추가해주면 문제 없이 하는데 Asynctask에서는 이런 문제를 어떻게 해결해야 하는지 모르겠습니다..ㅠㅠ
onCreate부분 입니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activitiy_address_group);
editSearch = (EditText) findViewById(R.id.address_group_edtadd);
listView = (ListView) findViewById(R.id.address_group_addlist);
list = new ArrayList<>();
Tablename = new ArrayList<>();
// 리스트를 생성한다.
//서버 전송 class
InsertData task = new InsertData();
task.execute("serverURL");
// 검색에 사용할 데이터을 미리 저장한다.
//settingList();
// 리스트의 모든 데이터를 arraylist에 복사한다.// list 복사본을 만든다.
arraylist = new ArrayList<String>();
arraylist.addAll(list);
// 리스트에 연동될 아답터를 생성한다.
adapter = new AddressGroupAdapter(list, this);
// 리스트뷰에 아답터를 연결한다.
listView.setAdapter(adapter);
// input창에 검색어를 입력시 "addTextChangedListener" 이벤트 리스너를 정의한다.
editSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
@Override
public void afterTextChanged(Editable editable) {
// input창에 문자를 입력할때마다 호출된다.
// search 메소드를 호출한다.
String text = editSearch.getText().toString();
search(text);
}
});
}
이부분이 서버에서 값을 받아오는 부분입니다.
class InsertData extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
try {
JSONObject Land = new JSONObject(result);
JSONArray jsonArray = Land.getJSONArray("Response");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject subJsonObject = jsonArray.getJSONObject(i);
String TableName = subJsonObject.getString("serverURL");
Tablename.add(TableName);
namelist = Tablename.get(i);
list.add(TableName); //서버에서 받은 값을 list에 추가
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}