我通过Retrofit获得有关.Json的数据,但是有时它不起作用,有时却起作用。 它不会显示在列表视图中。 我找不到问题。
有人帮我吗?
我可以在这里分享问题的视频。 www.loom.com/share/467bc319f5a7435cb6162b1e66864ade 谢谢大家。
我的api地址:http://45.158.14.117:3000/todos
implementation 'com.squareup.retrofit2:retrofit:2.7.1'
implementation 'com.squareup.retrofit2:converter-gson:2.7.1'
implementation("com.squareup.okhttp3:okhttp:4.3.1")
REPO
public class Repo {
@SerializedName("_id")
@Expose
public String id;
@SerializedName("title")
@Expose
public String title;
@SerializedName("date")
@Expose
public String date;
ApiClient
public class ApiClient {
private static Retrofit retrofit=null;
private static String Base_Url= "http://45.158.14.117:3000/";
public static Retrofit getClient(){
if(retrofit== null){
retrofit = new Retrofit.Builder()
.baseUrl(Base_Url)
.addConverterFactory(GsonConverterFactory.create())
.client(new OkHttpClient())
.build();
return retrofit;
}
return retrofit;
}//ApiClient.class
}
MainActivity
public class MainActivity extends AppCompatActivity {
RestInterface restInterface;
List<Repo> repoList=new ArrayList<>();
CustomAdapter customAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
restInterface=ApiClient.getClient().create(RestInterface.class);
Call<List<Repo>> call=restInterface.getRepo();
call.enqueue(new Callback<List<Repo>>() {
@Override
public void onResponse(Call<List<Repo>> call, Response<List<Repo>> response) {
for (Repo p : response.body()){
repoList.add(p);
}
}
@Override
public void onFailure(Call<List<Repo>> call, Throwable t) {
Toast.makeText(getApplicationContext(), "HATA", Toast.LENGTH_LONG).show();
//Toast.LENGTH_LONG yerine 2000 girersek 2 sn gösterecektir.
}
});
ListView listView = (ListView) findViewById(R.id.list);
customAdapter = new CustomAdapter(MainActivity.this, repoList);
listView.setAdapter(customAdapter);
}
}
CustomAdapter
public class CustomAdapter extends BaseAdapter {
private LayoutInflater layoutInflater;
private List<Repo> repoList;
public CustomAdapter(Activity activity, List<Repo> repoList){
layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.repoList = repoList;
}
@Override
public int getCount() {
return repoList.size();
}
@Override
public Object getItem(int i) {
return repoList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View satirView;
satirView = layoutInflater.inflate(R.layout.list_layout, null);
TextView idNumber =
(TextView) satirView.findViewById(R.id.idNumber);
TextView name =
(TextView) satirView.findViewById(R.id.name);
Repo person = repoList.get(i);
idNumber.setText(person.date);
name.setText(person.title);
return satirView;
}
}