#java #android #json #image #load
#java #Android #json #изображение #загрузить
Вопрос:
У меня есть класс ImageLoader, FileCache, MemoryCache и утилиты, но я не знаю, как реализовать загрузку изображений в этом коде, кто-нибудь может помочь? Мой адрес с помощью JSON по-прежнему остается IP, который я не включил в домен, если требуется API для написания комментария… Это все для ListView…
private static final String TAG_OBJECTS = "objects";
private static final String TAG_ID = "id";
private static final String TAG_NAME = "ime";
private static final String TAG_EMAIL = "email";
private static final String TAG_MOBILE = "telefon";
private static final String TAG_DESCRIPTION = "opis";
private static final String TAG_IMAGE = "slika";
// objekti JSONArray-a
JSONArray objects = null;
// Hashmap za ListView
ArrayList<HashMap<String, String>> informacijaLista;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_main, container, false);
new GetContacts().execute();
return rootView;
}
@Override
public void onViewCreated (View view, Bundle savedInstanceState) {
informacijaLista = new ArrayList<HashMap<String, String>>();
ListView lv = getListView();
setHasOptionsMenu(true);
lv.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
String name = ((TextView) view.findViewById(R.id.name))
.getText().toString();
String email = ((TextView) view.findViewById(R.id.email))
.getText().toString();
String telefon = ((TextView) view.findViewById(R.id.mobile))
.getText().toString();
//ImageView image = (ImageView)view.findViewById(R.id.image);
String image = ((ImageView) view.findViewById(R.id.image)).getImageMatrix().toString();
Intent in = new Intent(getActivity().getApplicationContext(),
SingleInfoActivity.class);
in.putExtra(TAG_NAME, name);
in.putExtra(TAG_EMAIL, email);
in.putExtra(TAG_MOBILE, telefon);
in.putExtra(TAG_IMAGE, image);
startActivity(in);
}
});
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// TODO Add your menu entries here
inflater.inflate(R.menu.main, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
switch (item.getItemId()) {
case R.id.refresh:
new GetContacts().onPostExecute(null);
return true;
case R.id.action_settings:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
/**
* asihrona klasa za JSON poziv preko HTTP protokola
* */
public class GetContacts extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// prikazivanje progres bara
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Ucitavanje informacija...");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Void doInBackground(Void... arg0) {
// instaciranje servis klase
Servis sh = new Servis();
//uzmi adresu
String jsonStr = sh.makeServiceCall(url, Servis.GET, null);
Log.d("odgovor: ", "> " jsonStr);
if (jsonStr != null) {
try {
JSONObject jsonObj = new JSONObject(jsonStr);
objects = jsonObj.getJSONArray(TAG_OBJECTS);
// LISTANJE svih objekata tj informacija
for (int i = 0; i < objects.length(); i ) {
JSONObject c = objects.getJSONObject(i);
String id = c.getString(TAG_ID);
String name = c.getString(TAG_NAME);
String email = c.getString(TAG_EMAIL);
String image = c.getString(TAG_IMAGE);
HashMap<String, String> info = new HashMap<String, String>();
info.put(TAG_ID, id);
info.put(TAG_NAME, name);
info.put(TAG_EMAIL, email);
info.put(TAG_IMAGE, image);
informacijaLista.add(info);
}
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Log.e("Servis", "Url adresa nije validna");
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// za odbacivanje progres dialga
if (pDialog.isShowing())
pDialog.dismiss();
/**
* azuriranje podataka u list viewU
* */
//ListView list = (ListView)findViewById(R.id.list_item);
ListAdapter adapter = new SimpleAdapter(getActivity(), informacijaLista,
R.layout.list_item, new String[] {
TAG_NAME,
TAG_EMAIL,
TAG_MOBILE,
TAG_IMAGE
},
new int[] {
R.id.name,
R.id.email,
R.id.mobile,
R.id.image
});
setListAdapter(adapter);
}
}}
Комментарии:
1. Вы не можете вызвать AsyncTask, как
new GetContacts().onPostExecute();
usenew GetContacts().execute();
Для остальных, я еще не проверял ваш код.2. Вы должны загрузить свои изображения в getView(). Пожалуйста, покажите свой код.
3. С кодом все в порядке, просто нужно загрузить изображение, но спасибо за просмотр этой ошибки для onPostExeceute: D
4. У вас две учетные записи?
5. Нет функции getView()?