Пустой список Android Studio

Почему я получаю пустой список на моем телефоне. Может ли 1 помочь? Это показывает правильные 7 позиций, но они пусты.
Есть мой PHP-файл, вероятно, хорошо. Я использую JSON кодировать.

public class ClientActivity extends UserAreaActivity {

private String jsonResult;
private String url = "http://vinusek.000webhostapp.com/Client2.php";
private ListView listView;
private TextView nazwa;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_client);
listView = (ListView) findViewById(R.id.listView1);
nazwa = (TextView) findViewById(R.id.textView2) ;
accessWebService();
}

// Async Task to access the web
private class JsonReadTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(params[0]);
try {
HttpResponse response = httpclient.execute(httppost);
jsonResult = inputStreamToString(
response.getEntity().getContent()).toString();
}

catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

private StringBuilder inputStreamToString(InputStream is) {
String rLine = "";
StringBuilder answer = new StringBuilder();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));

try {
while ((rLine = rd.readLine()) != null) {
answer.append(rLine);
}
}

catch (IOException e) {
// e.printStackTrace();
Toast.makeText(getApplicationContext(),
"Error..." + e.toString(), Toast.LENGTH_LONG).show();
}
return answer;
}

@Override
protected void onPostExecute(String result) {
ListDrwaer();
}
}// end async task

public void accessWebService() {
JsonReadTask task = new JsonReadTask();
// passes values for the urls string array
task.execute(new String[] { url });
}

// build hash set for list view
public void ListDrwaer() {
List<Map<String, String>> employeeList = new ArrayList<Map<String, String>>();

try {

JSONObject jsonResponse = new JSONObject(jsonResult);
JSONArray jsonMainNode = jsonResponse.optJSONArray("result");

for (int i = 0; i < jsonMainNode.length(); i++) {
JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
String number = jsonChildNode.getString("id");
String name = jsonChildNode.getString("login");
String pass = jsonChildNode.getString("haslo");
String outPut = number + "-" +  name + "-" + pass;
employeeList.add(createEmployee("list", outPut));
nazwa.setText(outPut);
}} catch (JSONException e) {
Toast.makeText(getApplicationContext(), "Error" + e.toString(),
Toast.LENGTH_SHORT).show();
}SimpleAdapter simpleAdapter = new SimpleAdapter(ClientActivity.this, employeeList,
android.R.layout.simple_list_item_1,
new String[] {"list"}, new int[] { android.R.id.text1 });
listView.setAdapter(simpleAdapter);
}

private HashMap<String, String> createEmployee(String name, String number) {
HashMap<String, String> employeeNameNo = new HashMap<String, String>();
employeeNameNo.put(number, name);
return employeeNameNo;
}}

Что здесь не так, я получил код отсюда http://codeoncloud.blogspot.in/2013/07/android-mysql-php-json-tutorial.html
и это работает для его файла php.

2

Решение

Проверить SimpleAdapter ссылка на класс:

Как видите, конструктор принимает следующие аргументы:

SimpleAdapter (Context context,
List<? extends Map<String, ?>> data,
int resource,
String[] from,
int[] to)
  1. context Context: контекст, в котором выполняется представление, связанное с этим SimpleAdapter
  2. Список данных: Список карт. Каждая запись в списке соответствует одной строке в списке. Карты содержат данные для каждой строки и должны включать все записи, указанные в «от»
  3. resource int: идентификатор ресурса макета представления, который определяет представления для этого элемента списка. Файл макета должен содержать хотя бы те именованные представления, которые определены в «to»
  4. from String: список имен столбцов, которые будут добавлены на карту, связанную с каждым элементом.
  5. to int: Представления, которые должны отображать столбец в параметре «from». Все они должны быть TextViews. Первые N представлений в этом списке получают значения первых N столбцов в параметре from.

Вы создаете SimpleAdapter с :

SimpleAdapter simpleAdapter = new SimpleAdapter(ClientActivity.this, employeeList,
android.R.layout.simple_list_item_1,
new String[] {"list"}, new int[] { android.R.id.text1 });

Это означает, что каждый элемент вашего employeeList List должен быть Map который содержит ключ «список».

Следовательно

employeeList.add(createEmployee("list", outPut));

следует добавить к List Map имеющий запись с ключом «список» и значением outPut,

Тем не менее, ваш createEmployee() метод создает HashMap с одной записью, где ключ и значение меняются местами.

Вы должны изменить

private HashMap<String, String> createEmployee(String name, String number) {
HashMap<String, String> employeeNameNo = new HashMap<String, String>();
employeeNameNo.put(number, name);
return employeeNameNo;
}

в

private HashMap<String, String> createEmployee(String name, String number) {
HashMap<String, String> employeeNameNo = new HashMap<String, String>();
employeeNameNo.put(name, number);
return employeeNameNo;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]