先看效果:
1.bean类:
package com.example.administrator.retrofit; import java.util.List; public class Cook { private String message; private String nu; private String ischeck; private String com; private String status; private String condition; private String state; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String getNu() { return nu; } public void setNu(String nu) { this.nu = nu; } public String getIscheck() { return ischeck; } public void setIscheck(String ischeck) { this.ischeck = ischeck; } public String getCom() { return com; } public void setCom(String com) { this.com = com; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getCondition() { return condition; } public void setCondition(String condition) { this.condition = condition; } public String getState() { return state; } public void setState(String state) { this.state = state; } public List<DataBean> getData() { return data; } public void setData(List<DataBean> data) { this.data = data; } private List<DataBean> data; public class DataBean { public String getTime() { return time; } public void setTime(String time) { this.time = time; } public String getContext() { return context; } public void setContext(String context) { this.context = context; } public String getFtime() { return ftime; } public void setFtime(String ftime) { this.ftime = ftime; } private String time; private String context; private String ftime; } } 2.Service接口:package com.example.administrator.retrofit; import retrofit.Call; import retrofit.http.POST; import retrofit.http.Query; public interface Service { @POST("query") Call<Cook> search(@Query("type") String type, @Query("postid") String postid); }3.MainActivity:package com.example.administrator.retrofit; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ListView; import java.util.List; import retrofit.Call; import retrofit.Callback; import retrofit.GsonConverterFactory; import retrofit.Response; import retrofit.Retrofit; public class MainActivity extends AppCompatActivity implements Callback<Cook> { private ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 创建Retrofit实例 Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://www.kuaidi100.com/")//设置URL .addConverterFactory(GsonConverterFactory.create()) .build(); // 创建接口,通过接口获取到网络接口服务 Service service = retrofit.create(Service.class); // 获取到接口的Call Call<Cook> call = service.search("yuantong", "500379523313"); // 请求数据 call.enqueue(this); lv = (ListView) findViewById(R.id.json_lv); } @Override public void onResponse(Response<Cook> response, Retrofit retrofit) { List<Cook.DataBean> data = response.body().getData(); lv.setAdapter(new MyAdapter(MainActivity.this, data)); } @Override public void onFailure(Throwable t) { } }4.适配器:package com.example.administrator.retrofit; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import java.util.List; public class MyAdapter extends BaseAdapter { private Context context; private List<Cook.DataBean> list; public MyAdapter(Context context, List<Cook.DataBean> list) { this.context = context; this.list = list; } @Override public int getCount() { if (list != null) { return list.size(); } return 0; } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(context).inflate(R.layout.item, parent, false); convertView.setTag(new ViewHolder(convertView)); } ViewHolder holder = (ViewHolder) convertView.getTag(); Cook.DataBean dataBean = list.get(position); holder.tv_title.setText(dataBean.getContext()); holder.tv_info.setText(dataBean.getFtime()); //使用同样开发团队的Picasso支持包进行图片加载,由于接口中返回的img路径不是全的,所以需要加上网站前缀 // Picasso.with(context).load("http://tnfs.tngou.net/img" + cook.getData().get(position)).into(holder.iv); return convertView; } public static class ViewHolder { private final ImageView iv; private final TextView tv_title; private final TextView tv_info; public ViewHolder(View item) { iv = ((ImageView) item.findViewById(R.id.item_iv)); tv_title = ((TextView) item.findViewById(R.id.item_title)); tv_info = ((TextView) item.findViewById(R.id.item_info)); } } }5.布局i:activity_main: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.administrator.retrofit.MainActivity"> <ListView android:id="@+id/json_lv" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView> </LinearLayout>item:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/item_iv" android:layout_width="70dp" android:layout_height="70dp" android:src="@mipmap/ic_launcher" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:orientation="vertical"> <TextView android:id="@+id/item_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="标题" android:textAppearance="@android:style/TextAppearance.Large" /> <TextView android:id="@+id/item_info" android:layout_width="match_parent" android:layout_height="wrap_content" android:ellipsize="end" android:maxLines="2" android:text="abcabcacbacbacbacbacbacacacacacasdadasd" /> </LinearLayout> </LinearLayout>