我正在学习改造,我只是试图将json转换为gson。也许这是因为我不熟悉链接的json格式的结构。我尝试了更简单的格式和应用程序的另一个链接。我想查询“数据”中的内容。我希望你能给我一些建议,弄清楚什么是错的。顺便说一下,我为这两个链接制作了单独的应用程序。但是这个过程是相似的。应用程序崩溃而不显示错误(Retrofit 2)
这里是我应该是工作的链接:
下面是本教程
这里给出的链接是我的接口:
public interface HTTPService {
@GET("/organizations?type=json")
Call<Organization> getMyJSON();
}
这里是我的客户:
public class HTTPClient {
private static final String ROOT_URL = "http://isteward.tastradedev.com/api";
/**
* Get Retrofit Instance
*/
private static Retrofit getRetrofitInstance() {
return new Retrofit.Builder()
.baseUrl(ROOT_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
/**
* Get API Service
*
* @return API Service
*/
public static HTTPService getApiService() {
return getRetrofitInstance().create(HTTPService.class);
}
}
这里是我的MainActivvity:
public class MainActivity extends AppCompatActivity {
private ListView listView;
private View parentView;
private ArrayList<Datum> datalist;
private ListAdapter adapter;
ProgressDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
datalist = new ArrayList<>();
parentView = findViewById(R.id.parentlayout);
listView = (ListView) findViewById(R.id.listView);
dialog = new ProgressDialog(MainActivity.this);
dialog.setTitle("Fetching Data");
dialog.setMessage("Please wait...");
dialog.show();
//Creating an object of our api interface
HTTPService api = HTTPClient.getApiService();
Call<Organization> call = api.getMyJSON();
call.enqueue(new Callback<Organization>() {
@Override
public void onResponse(Call<Organization> call, Response<Organization> response) {
//Dismiss Dialog
dialog.dismiss();
if (response.isSuccessful()) {
datalist = response.body().getData();
adapter = new ListAdapter(MainActivity.this, datalist);
listView.setAdapter(adapter);
} else {
Toast.makeText(MainActivity.this, "error", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<Organization> call, Throwable t) {
}
});
}
}
我使用jsonschema2pojo生成的类。 链接由3个类组成。我想这会让我的帖子太长。感谢您的帮助。
编辑:我想我必须包括我的适配器
这里是我的适配器的某些部分:
public class ListAdapter extends ArrayAdapter<Datum> {
ArrayList<Datum> datalist;
Context context;
private LayoutInflater inflater;
public ListAdapter(Context context, ArrayList<Datum> objects) {
super(context, 0, objects);
this.context = context;
this.inflater = LayoutInflater.from(context);
datalist = objects;
}
@Override
public Datum getItem(int position) {
return datalist.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder vh;
if (convertView == null) {
View view = inflater.inflate(R.layout.row, parent, false);
vh = ViewHolder.create((RelativeLayout) view);
view.setTag(vh);
} else {
vh = (ViewHolder) convertView.getTag();
}
尝试使用okhttp HttpLoggingInterceptor从服务器调试您的响应。 –
Android监视器中必须有日志猫条目。请粘贴在这里,我们需要检查它。 – Vucko
这里呼叫<组织>您从服务器获得组织,但api显示它是小孩。如果你从jsonschema2pojo生成类然后使用Example类。如致电 –