У меня есть список со следующей планировкой:Android динамически устанавливать ImageView в списке
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/outName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="6dip"
android:paddingLeft="6dip"
android:textSize="17sp"
android:textStyle="bold" />
<TextView
android:id="@+id/outSurname"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="6dip"
android:paddingLeft="6dip"
android:textSize="17sp"
android:textStyle="bold" />
<TextView
android:id="@+id/outAddress"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="6dip"
android:paddingLeft="6dip"
android:textSize="17sp"
android:textStyle="bold" />
<TextView
android:id="@+id/outPhone"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="6dip"
android:paddingLeft="6dip"
android:textSize="17sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/outPhoto"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Я восстановить свои поля от BD в JSON формате с использованием Async задачи, и я заполняю список в функции onPostExecute как так:
// Updating UI from Background Thread
runOnUiThread(new Runnable() {
public void run() {
// Updating parsed JSON data into ListView
ListAdapter adapter = new SimpleAdapter(
MyActivity.this, MyList,
R.layout.my_layout, new String[] { “name”, “surname”, “address”, "phone" },
new int[] { R.id.outName, R.id.outSurname, R.id.outAddress, R.id.outPhone });
// Updating ListView
setListAdapter(adapter);
}
});
}
}
где MyList является ArrayList:
ArrayList<HashMap<String, String>> MyList;
MyList = new ArrayList<HashMap<String, String>>();
Каждое поле моих результатов JSONArray является состоящий из «имени», «фамилии», «адреса», «телефона» и «фотографии». «фото» - это числовое поле с 4 возможными значениями (0, 1, 2, 3), где каждое значение относится к определенному изображению, которое у меня есть в моей папке с возможностью рисования. Как я могу установить динамическое изображение ImageView в зависимости от этого значения?
'onPostExecute()' уже выполнен в потоке пользовательского интерфейса. Нет необходимости обертывать код в 'runOnUiThread()'. Имейте в виду, что ваша деятельность может быть остановлена / уничтожена при вызове 'onPostExecute()'. –
Я думаю, что это было что-то вроде retrieve ImageView по id из R, а затем называть setBackground (drawable) на нем. Drawable является ресурсом, который вы также извлекаете через findById из R. –
@LJoosse У меня есть основной класс, в котором я вызываю (MyClass(). Execute();) другой класс расширяет AsyncTask, состоящий из onPreExecute(), doInBackground (String ... args) и onPostExecute (String file_url). Я всегда считал, что это лучший способ. Могу ли я сделать это по-другому? user3427079 Я потратил много времени на то, чтобы подумать, как сделать это без адаптера, но я никогда не найду решение. – Fedro