我正在學習改造,我只是試圖將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類。如致電 –