0 android listview adapter listviewitem parse-platform
我使用ListView来显示解析的所有记录.使用名为ListadoObjetoParse的自定义类,它包含一些属性,如名称,地址和ParseFile,最后一个包含记录的图像.包含所有内容的数据对象是ListadoObjetoParse的ArrayList,称为datos.尝试获取图像(ParseFile)时,问题出现在自定义适配器(RestaurantesAdapter)中,并从名为"datos"的对象填充listView.无法将图像作为ParseFile获取并转换为Bitmap以显示在listView中.我只看过一种使用GetDAtaInBackGround方法的方法.下面我展示了CustomAdapter和Class ListadoObjetoParse.
我很感激任何帮助,因为我长时间被困住了.非常感谢你
/ CUSTOM ADAPTER /
public class RestaurantesAdapter extends ArrayAdapter<ListadoObjetoParse> {
private Context context;
private ArrayList<ListadoObjetoParse> datos;
public RestaurantesAdapter(Context context, ArrayList<ListadoObjetoParse> datos) {
super(context, R.layout.activity_mostrar_listado_restaurantes, datos);
this.context = context;
this.datos = datos;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View item = LayoutInflater.from(context).inflate(
R.layout.mostrar_listado_detalle_restaurante, null);
final ImageView imagen = (ImageView) item.findViewById(R.id.imgRestaurante);
//Here i fetch Image from the class ListadoObjetoParse with method getImagen
ParseFile i = datos.get(position).getImagen();
/*Expected to do this, but of course not possible convert*/
Bitmap i = (Bitmap) datos.get(position).getImagen();
/*Example Way that is shown in tutorials and parse to fetch the image. But doesn't work for my "datos" object*/
i.getDataInBackground(new GetDataCallback() {
public void done(byte[] data, ParseException e) {
if (e == null) {
//Convert ParseFile image of item to Bitmap and show in the listItem
Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
imagen.setImageBitmap(bmp);
} else {
Log.d("test", "There was a problem downloading the data.");
}
}
});
//Setting name of item in listview
TextView nombre = (TextView) item.findViewById(R.id.tvNombre);
nombre.setText(datos.get(position).getNombre());
//Setting phone number of item in listview
TextView telefono = (TextView) item.findViewById(R.id.tvTelefono);
telefono.setText(datos.get(position).getTelefono());
//Setting address of item in listview
TextView direccion = (TextView) item.findViewById(R.id.tvDireccion);
direccion.setText(datos.get(position).getDireccion());
return item;
}
Run Code Online (Sandbox Code Playgroud)
/ LISTADOOBJECTOPARSE.CLASS /
公共类ListadoObjetoParse {
private String nombre;
private String direccion;
private String ciudad;
private String telefono;
private ParseFile imagen;
//*CONSTRUCT*/
public ListadoObjetoParse() {}
public ListadoObjetoParse(String nombre, String ciudad, String direccion, String telefono){
this.nombre = nombre;
this.ciudad = ciudad;
this.direccion = direccion;
this.telefono = telefono;
}
public ListadoObjetoParse(String nombre, String ciudad, String direccion, String telefono, ParseFile imagen){
this.nombre = nombre;
this.ciudad = ciudad;
this.direccion = direccion;
this.telefono = telefono;
this.imagen = imagen;
}
/*METHODS*/
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getCiudad() {
return ciudad;
}
public void setCiudad(String ciudad) {
this.ciudad = ciudad;
}
public String getDireccion() {
return direccion;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public String getTelefono() {return telefono;}
public void setTelefono(String telefono) {this.telefono = telefono;}
public ParseFile getImagen() {return imagen;}
public void setImagen(ParseFile imagen) {
this.imagen = imagen;
}
Run Code Online (Sandbox Code Playgroud)
}
首先 尝试使用ParseImageView代替Image视图并加载ParseFiles native:
ParseFile file;
ParseImageView imageView = (ParseImageView) findViewById(android.R.id.icon);
imageView.setParseFile(file);
imageView.loadInBackground(new GetDataCallback() {
@Override
public void done(byte[] data, ParseException e) {
}
});
Run Code Online (Sandbox Code Playgroud)
或者只是imageView.loadInBackground()你不需要回调.
更多解析文档
第二
ParseFile file;
ImageView imageView = (ImageView) findViewById(android.R.id.icon);
byte[] bitmapdata = file.getData();
Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata , 0, bitmapdata.length);
imageView.setImageBitmap(bitmap);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3143 次 |
| 最近记录: |