gpt4 book ai didi

android - 应用程序崩溃但不显示错误(Retrofit 2)

转载 作者:行者123 更新时间:2023-12-05 07:43:16 26 4
gpt4 key购买 nike

我正在学习改造,我只是想将 json 转换为 gson。可能是我对链接的json格式的结构不熟悉吧。我已经尝试了另一个格式更简单的链接,并且该应用程序可以正常工作。我想查询“数据”中的内容。我希望你能给我一些建议并找出问题所在。顺便说一句,我为这两个链接制作了单独的应用程序。但过程是相似的。

这是我应该工作的链接:

Link that makes app crash

这里是教程给的链接

working link

这是我的界面:

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();
}

最佳答案

首先当你使用retrofit时请遵循以下

http://isteward.tastradedev.com

请仅提供 retrofit 之后的域,应该像这样进入界面

@GET("api/organizations?type=json")

请不要在根 url 后添加任何斜杠

http://isteward.tastradedev.com

@GET("/api/organizations?type=json")

而且我在您的回复中看到了一些空字符串。请将它们转换为 null 或传递其他内容(这可能是您的问题)。

关于android - 应用程序崩溃但不显示错误(Retrofit 2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43842071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com