Вы делаете setListAdapter
в цикле, что странно, и я уверен, что это не то, что вы намеревались сделать. Вам нужно только заполнить строковый массив вашими данными и инициализировать свой объектAdAdter с строковым массивом списком строкового массива и выполните setListAdapter
один раз .
EDIT:
Я думаю, вы неправильно поняли концепцию адаптера: адаптер предназначен для хранения данных для всего AdapterView
, который является родительским классом ListView
, а не для хранения данных для одного элемента в AdapterView.
Вам понадобится List
из String[]
для вашего адаптера, что-то вроде следующего:
public FacilitiesAdapter ... {
List<String[]> dataList;
public FacilitiesAdapter (List<String[]> dataList) {
this.dataList = dataList;
}
public View getView(int position, View convertView, ViewGroup parent) {
String[] data = dataList.get(position);
// set your data to the views.
}
}
РЕДАКТИРОВАТЬ 2:
List<String[]> listData = new ArrayList<String[]>();
for(int i = 0; i < jArray.length(); ++i) {
JSONObject json_data = jArray.getJSONObject(i);
String name = json_data.getString("Name");
String phone = json_data.getString("Phone");
//... some code to check *nullity* of name and phone
listData.add(new String[]{name, phone});
}
Приведенный выше код заполнит listData
именами и телефонами (хранящимися в массиве), полученными из JSONObject. И теперь вы можете передать этот listData в качестве параметра конструктору вашего адаптера.
Если вы все еще не получаете его, вам нужна книга по языку программирования Java, освоение которого до использования языка для программирования Android поможет вам лучше изучить другие вещи.