【发布时间】:2018-03-26 13:58:17
【问题描述】:
我有一个 api,我可以在其中获取信息,并且我想获取图像,如果它们也有,并将其放入 ListView。我得到了数据,但不明白如何获取图像,你能帮我吗? api链接:http://gdetut.com/api/firms?salt=63926e380bdc96ef990d57898daeb71c&category_id=1 普通视图下的api:http://jsonprettyprint.com/json-pretty-printer.php
这个应用程序显示了服务站和汽配店,需要从api上传图片,如果是,最好的方法是这样做吗?
改造类:
public class Retrofit {
private static final String ENDPOINT = "http://gdetut.com/api";
private static ApiInterface apiInterface;
interface ApiInterface {
@GET("/firms?salt=63926e380bdc96ef990d57898daeb71c&category_id=1")
void getPlaces(Callback<List<Places>> callback);
}
static {
init();
}
private static void init() {
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(ENDPOINT)
.setLogLevel(RestAdapter.LogLevel.FULL)
.build();
apiInterface = restAdapter.create(ApiInterface.class);
}
public static void getPlaces (Callback<List<Places>> callback) {
apiInterface.getPlaces(callback);
}
}
Ratrofit 在 Activity 中的成功:
Retrofit.getPlaces(new Callback<List<Places>>() {
@Override
public void success(List<Places> places, Response response) {
listView.setAdapter(new MyAdapter(MainActivity.this, places));
}
适配器:
class MyAdapter extends ArrayAdapter<Places> {
public MyAdapter(Context context, List<Places> objects) {
super(context, R.layout.list_item, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
View rowView = convertView;
if (rowView == null) {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.list_item, parent, false);
holder = new ViewHolder();
holder.nameOfPlace = (TextView) rowView.findViewById(R.id.name_id);
holder.subcategory_name = (TextView) rowView.findViewById(R.id.subcategory_name_id);
holder.geometryName = (TextView) rowView.findViewById(R.id.geometry_name_id);
holder.imageView = (ImageView) rowView.findViewById(R.id.image_id);
holder.rating = (TextView) rowView.findViewById(R.id.rating_id);
rowView.setTag(holder);
} else {
holder = (ViewHolder) rowView.getTag();
}
Places places = getItem(position);
holder.nameOfPlace.setText(places.getName());
holder.subcategory_name.setText(places.getSubcategory_name());
holder.geometryName.setText(places.getGeometry_name());
holder.imageView.setImageResource(places.getImage());
holder.imageView.setImageResource(R.drawable.restaurant48);
holder.rating.setText(places.getRating());
return rowView;
}
class ViewHolder {
public TextView nameOfPlace;
public TextView subcategory_name;
public TextView geometryName;
public TextView rating;
public ImageView imageView;
}
}
地点类:
public class Places implements Serializable {
String name;
String geometry_name;
String rating;
String subcategory_name;
int image;
public Places(String name, String geometry_name, String rating,String subcategory_name, int image) {
this.name = name;
this.geometry_name = geometry_name;
this.rating = rating;
this.subcategory_name = subcategory_name;
this.image = image;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGeometry_name() {
return geometry_name;
}
public void setGeometry_name(String geometry_name) {
this.geometry_name = geometry_name;
}
public String getRating() {
return rating;
}
public void setRating(String rating) {
this.rating = rating;
}
public String getSubcategory_name() {
return subcategory_name;
}
public void setSubcategory_name(String subcategory_name) {
this.subcategory_name = subcategory_name;
}
public int getImage() {
return image;
}
public void setImage(int image) {
this.image = image;
}
}
【问题讨论】:
-
似乎是 Retrofit API to retrieve a png image 的副本。