Я пробовал несколько разных макетов, чтобы получить более глубокие возможности и отклонения. Я начал с массива, чтобы отображать элементы в списке, которые отлично работали.путают о Textview и Listview для отображения списка
Теперь я хотел отобразить элементы, которые я получил из базы данных через JSON.
Я получаю следующее сообщение об ошибке: Вы должны указать идентификатор ресурса для TextView
я использовал тот же XML-файл, который работал до этого, вот мой all_products.xml
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:id="@+id/mobile_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@color/colorPrimaryDark"
android:dividerHeight="1px">
</ListView>
</LinearLayout>
В моей Java класс Я использовал код, который я использовал ранее для адаптера массива, я изменил только параметр, который должен отображаться. Вот часть моей AllProductsActivity.java
:
private void processValue(ArrayList<String> result) {
{
ArrayAdapter adapter = new ArrayAdapter<String>(AllProductsActivity.this, R.layout.all_products, result);
ListView listView = (ListView) findViewById(R.id.list);
listView.setAdapter(adapter);
}
}
результат приходит от моего AsyncTask. здесь также имеется фрагмент:
JSONArray jsonArray = new JSONArray(result.toString())
ArrayList<String> listdata = new ArrayList<String>();
for(int n = 0; n < jsonArray.length(); n++)
{
JSONObject object = jsonArray.getJSONObject(n);
listdata.add(object.optString("nr"));
}
return listdata;
protected void onPostExecute(ArrayList<String> result) {
pdLoading.dismiss();
processValue(result);
}
Почему я получаю сообщение об ошибке? И, возможно, об использовании только Textview. Когда я искал toppic, я обнаружил разные угрозы, когда люди использовали Textviews вместо Listview. EDIT: Так это работает, я добавил еще один файл XML, mytextview.xml
<TextView android:id="@+id/mytext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@color/colorPrimaryDark"
android:dividerHeight="1px"
xmlns:android="http://schemas.android.com/apk/res/android">
и изменил adapterstatement на следующее:
ArrayAdapter adapter = new ArrayAdapter<String>(AllProductsActivity.this,
R.layout.mytextview,R.id.mytext , result);
ListView listView = (ListView) findViewById(R.id.mobile_list);
listView.setAdapter(adapter);
Какие ошибки вы получаете? – Divers
Вы добавляете файл макета all_products в адаптер массива. Это неверно. Адаптер Array ожидает файл макета, представляющий элемент списка, например. файл макета с именем list_item.xml, который содержит, например, TextView, где вы можете показать нужную строку для элемента списка ... –
Почему вы поставляете all_products.xml при создании объекта адаптера? Это родительский макет, в котором находится ваш список. Вместо этого вы должны создать отдельный макет с текстовым представлением и предоставить этот макет в параметре. –