Здравствуйте, сталкивайтесь с конкретной проблемой, в которой мне нужно загрузить изображения и отобразить их на ListView
, соответствующие их конкретному TextView's
. Код, который у меня есть, успешно отображает The TextView's
Мне нужно отобразить, но я не знаю, как отображать все эти разные изображения рядом с моими текстовыми представлениями в моем ListView
.
Пройдя через много потоков в SO. Лучшие ответы должны решить это 1. Ленивый список 2. Универсальный загрузчик изображений
Я прошел через оба решения. Я загрузил коды Lazy List, в которых URL-адрес - это строки с жестким кодом, хранящиеся в массиве. То, что я хотел бы сделать, это создать мои собственные строки динамически. Храните их в кеше и отобразите все соответствующие изображения.
Вот мой код:
public class Tools_ListItemActivity extends ListActivity
{
private Context context;
String s;
private static final String TAG_POSTS = "posts";
private static final String TAG_MDNAME = "mdname";
private static final String TAG_UTCOST = "utcost";
private static final String TAG_IIMG= "iimg";
JSONArray posts = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
s=getIntent().getExtras().getString("url");
new ProgressTask(Tools_ListItemActivity.this).execute();
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
}
ArrayList<HashMap<String, String>> jsonlist = new ArrayList<HashMap<String, String>>();
ListView lv ;
private class ProgressTask extends AsyncTask<String, Void, Boolean> {
private ProgressDialog dialog;
public ProgressTask(ListActivity activity) {
Log.i("1", "Called");
context = activity;
dialog = new ProgressDialog(context);
}
/** progress dialog to show user that the backup is processing. */
/** application context. */
private Context context;
protected void onPreExecute() {
this.dialog.setMessage("Progress start");
this.dialog.show();
}
@Override
protected void onPostExecute(final Boolean success) {
if (dialog.isShowing()) {
dialog.dismiss();
}
ListAdapter adapter = new SimpleAdapter(context, jsonlist,
R.layout.activity_toolsitem, new String[] { TAG_IIMG, TAG_MDNAME, TAG_UTCOST }, new int[] {
R.id.imageViewUrl, R.id.mdname, R.id.utcost });
setListAdapter(adapter);
// selecting single ListView item
lv = getListView();
}
protected Boolean doInBackground(final String... args) {
JSONParser jParser = new JSONParser();
// getting JSON string from URL
JSONObject json = jParser.getJSONFromUrl(s);
try {
posts = json.getJSONArray(TAG_POSTS);
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try
{
// looping through All Contacts
for(int i = 0; i < posts.length(); i++){
JSONObject c = posts.getJSONObject(i);
// Storing each json item in variable
String mdname = c.getString(TAG_MDNAME);
String utcost= c.getString(TAG_UTCOST);
String iimg=c.getString(TAG_IIMG);
//Forming the Url of the image to be shown in the list view
String imageUrl="My_App_URL"+iimg;
/* try {
String imageUrl="My_App_URL"+iimg;
ImageView imageView = (ImageView)findViewById(R.id.imageViewUrl);
Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(imageUrl).getContent());
imageView.setImageBitmap(bitmap);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} */
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_MDNAME, mdname);
map.put(TAG_UTCOST, utcost);
map.put(TAG_IIMG, iimg);
jsonlist.add(map);
} }catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
}
Здесь я отлаживаю и обнаружил, что imageUrl
формируется правильно. Json
возвращает только имя jpg
, поэтому я добавляю его к URL-адресу и сохраняю его в imageUrl
. Остальные два текстовых изображения получают правильную разборку и отображение. Если кто-то может помочь мне отображать изображения в представлении изображения, то это было бы здорово. Благодарю.
Update: Я смог решить свою конкретную проблему с помощью ссылки, разделяемой Pankaj (https://github.com/AndroidBegin/Android-JSON-Parse-Images-and-Texts-Tutorial) и концептуального знания, разделенного Рагхунанданом ниже. Прочтите эти ответы, чтобы получить подробное объяснение, а также выполнить загрузку Lazy. Мои извинения за то, что я не смог вознаградить ответ с благодарностью, поскольку я отсутствовал в течение двух дней.