В настоящее время я использую sipleAdapter (), чтобы создать адаптер и поместить в listView. но я хочу поместить изображение в это представление списка, поэтому решение заключается в создании настраиваемого адаптера, но в настраиваемом адаптере (BeritaAdapter) мой метод Пикассо не может быть разрешен с помощью ().
Picasso.with(context).load(url).into(img);
вот мой класс Берита
public class Berita extends AppCompatActivity {
ListView listview;
ArrayList<HashMap<String,String>> beritaList;
String id_kategori;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.berita);
Intent i = getIntent();
id_kategori = i.getStringExtra("id_kategori");
beritaList = new ArrayList<HashMap<String, String>>();
RequestQueue queue = Volley.newRequestQueue(this);
String url = "http://192.168.166.2/android/portal/berita/kategori";
StringRequest postRequest = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response){
// response
Log.d("hasil", response.toString());
try {
JSONObject responobjek = new JSONObject(response);
JSONArray jsonArray = responobjek.getJSONArray("berita");
Log.d("hasil jsonarray", jsonArray.toString());
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject c = jsonArray.getJSONObject(i);
HashMap<String, String> map = new HashMap<String, String>();
map.put("id_berita", c.getString("id_berita"));
map.put("judul_berita", c.getString("judul_berita"));
map.put("gambar_berita", c.getString("gambar_berita"));
beritaList.add(map);
}
String[] keys = {"id_berita", "judul_berita"};
int[] ids = { R.id.id_berita, R.id.judul_berita};
//MY CUSTOM ADAPTER
BeritaAdapter adapter = new BeritaAdapter(Berita.this, beritaList, R.layout.list_item_berita, keys, ids);
listview.setAdapter(adapter);
}catch (JSONException e) {
e.printStackTrace();
}
}
},new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error) {
// error
Log.d("Error.Response", "embuh error opo");
}
}
){
@Override
protected Map<String, String> getParams()
{
Map<String, String> params = new HashMap<String, String>();
params.put("id_kategori", id_kategori);
return params;
}
};
queue.add(postRequest);
}
}
В этом скрипте я использую свой собственный адаптер, то есть BeritaAdapter ().
а вот файл BeritaAdapter
public class BeritaAdapter extends SimpleAdapter{
Context context;
public BeritaAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to){
super(context, data, resource, from, to);
this.context = context;
}
public View getView(int position, View convertView, ViewGroup parent){
// here you let SimpleAdapter built the view normally.
View v = super.getView(position, convertView, parent);
// Then we get reference for Picasso
ImageView img = (ImageView) v.getTag();
if(img == null){
img = v.findViewById(R.id.gambar_berita);
}
// get the url from the data you passed to the `Map`
String url = (String) ((Map)getItem(position)).get("gambar_berita");
Picasso.with(context).load(url).into(img);
// return the view
return v;
}
}
как я могу получить контекст, чтобы я мог вставить
Picasso.with(context).load(url).into(img);