PDA

Ver la Versión Completa : [ SOLUCIONADO ] Glide


Merche300
06/12/16, 11:08:52
Veran, tengo un problema tanto con Glide, e de decir que tambien me pasa con Picasso.

public class MainActivity extends AppCompatActivity {

public static final String JSON_URL = "http://juveniles.esy.es/Temp_Actual/calendario.php";

private ListView listView;

override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sendRequest();

listView = (ListView) findViewById(R.id.listView);
}

private void sendRequest(){

StringRequest stringRequest = new StringRequest(JSON_URL,
new Response.Listener<String>() {
override
public void onResponse(String response) {
showJSON(response);
}
},
new Response.ErrorListener() {
override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this,error.getMessage( ),Toast.LENGTH_LONG).show();
}
});

RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}

private void showJSON(String json){
ParseJSON pj = new ParseJSON(json);
pj.parseJSON();
CustomList cl = new CustomList(this, ParseJSON.ids,ParseJSON.names,ParseJSON.emails,Par seJSON.escudo_local);
listView.setAdapter(cl);
}


public void onClick(View v) {
sendRequest();
}
}


CustomList.java
public class CustomList extends ArrayAdapter<String> {
private String[] ids;
private String[] names;
private String[] emails;
private String[] escudo_local;
private Activity context;

public CustomList(Activity context, String[] ids, String[] names, String[] emails,
String[] escudo_local) {
super(context, R.layout.list_view_layout, ids);

this.context = context;
this.ids = ids;
this.names = names;
this.emails = emails;
this.escudo_local = escudo_local;
}

override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View listViewItem = inflater.inflate(R.layout.list_view_layout, null, true);
TextView textViewId = (TextView) listViewItem.findViewById(R.id.textViewId);
TextView textViewName = (TextView) listViewItem.findViewById(R.id.textViewName);
TextView textViewEmail = (TextView) listViewItem.findViewById(R.id.textViewEmail);
ImageView imageViewImage = (ImageView) listViewItem.findViewById(R.id.imageViewImage);

textViewId.setText(ids[position]);
textViewName.setText(names[position]);
textViewEmail.setText(emails[position]);

Glide.with(context)

.load(listViewItem.get(position).getImage())
.diskCacheStrategy(DiskCacheStrategy.ALL)
.transform(new GlideCircleTransform(context))
.placeholder(R.mipmap.ic_launcher)
.error(android.R.drawable.ic_dialog_alert)
.into(imageViewImage);

return listViewItem;
}

}

ParseJSON.java

public class ParseJSON {
public static String[] ids;
public static String[] names;
public static String[] emails;
public static String[] escudo_local;

public static final String JSON_ARRAY = "jornadas";
public static final String KEY_ID = "nomLocal";
public static final String KEY_NAME = "jornada";
public static final String KEY_EMAIL = "nomVisitante";
public static final String KEY_ESCUDO_LOCAL = "escudoLocal";

private JSONArray calendario = null;

private String json;

public ParseJSON(String json){
this.json = json;
}

protected void parseJSON(){
JSONObject jsonObject=null;
try {
jsonObject = new JSONObject(json);
calendario = jsonObject.getJSONArray(JSON_ARRAY);

ids = new String[calendario.length()];
names = new String[calendario.length()];
emails = new String[calendario.length()];
escudo_local = new String[calendario.length()];

for(int i=0;i<calendario.length();i++){
JSONObject jo = calendario.getJSONObject(i);
ids[i] = jo.getString(KEY_ID);
names[i] = jo.getString(KEY_NAME);
emails[i] = jo.getString(KEY_EMAIL);
escudo_local[i] = ("http://ffcv.es/ncompeticiones/")+jo.getString(KEY_ESCUDO_LOCAL);


}
} catch (JSONException e) {
e.printStackTrace();
}
}
}

Y la pregunta es:
¿Porque en la linea

.load(listViewItem.get(position).getImage())

la palabra get me sale en rojo y como solucionarlo ?

Gracias

mocelet
06/12/16, 11:45:06
El problema no es de Glide ni de Picasso, es que listViewItem lo has declarado de tipo View y View no tiene ningún método get con parámetro int. Supongo que incluso el propio Android Studio te lo dirá al poner el cursor encima.

De todas formas no he entendido muy bien de dónde quieres sacar la imagen a cargar con load. Si ya la tuvieras en la vista no tendrías que cargarla. Y si la tienes en otro sitio supongo que lo que querrías hacer es un images[position], pero no tienes un array de imágenes ni nada parecido en el adapter.

Merche300
06/12/16, 11:58:48
El problema no es de Glide ni de Picasso, es que listViewItem lo has declarado de tipo View y View no tiene ningún método get con parámetro int. Supongo que incluso el propio Android Studio te lo dirá al poner el cursor encima.

De todas formas no he entendido muy bien de dónde quieres sacar la imagen a cargar con load. Si ya la tuvieras en la vista no tendrías que cargarla. Y si la tienes en otro sitio supongo que lo que querrías hacer es un images[position], pero no tienes un array de imágenes ni nada parecido en el adapter.

He editado el post 1 agregando el MainActivity, la imagen viene con el Json.

mocelet
06/12/16, 12:05:08
Si viene en el JSON tendrás que leerla del JSON, no de la View. Y guardarla en algún array como haces con todos los demás atributos, o la imagen es el escudo?

Merche300
06/12/16, 12:59:29
Si viene en el JSON tendrás que leerla del JSON, no de la View. Y guardarla en algún array como haces con todos los demás atributos, o la imagen es el escudo?

La imagen es el escudo, en el json viene untrozo de url y lo que falta es lo que añado

escudo_local[i] = ("http://ffcv.es/ncompeticiones/")+jo.getString(KEY_ESCUDO_LOCAL }

mocelet
06/12/16, 13:08:39
Pues entonces querrás hacer esto, ¿no?

.load(escudo_local[position])

Merche300
06/12/16, 13:16:43
Pues entonces querrás hacer esto, ¿no?

.load(escudo_local[position])

Vaya tela con el getImage(), si mocelet, desde ayer que estoy leyendo tutoriales y ya no sabia que hacer. Muchas gracias.