Я пытаюсь заполнить ListView JSON с сервера. Я получаю данные с сервера, но я не могу понять, как поместить его в ListView. Ошибка, которую я получаю, находится в onResponse.Заполнение ListView с использованием Retrofit 2
Он говорит: «Ошибка: (84, 54) Ошибка: конструктор JucatoriLiberiArrayAdapter в классе JucatoriLiberiArrayAdapter не может быть применен к данным типам; требуется: Контекст, ArrayList найдено: FragmentActivity, Call> причина: фактический аргумент вызов> не может преобразовывается в ArrayList путем преобразования вызова метода »
Я думаю, что я пробовал почти каждый исправление Alt + Enter. Также попытался изменить тип от Call<ArrayList<FreePlayers>
до ArrayList<>
или просто Call<>
.
Это мой класс:
@Override
public void onActivityCreated(final Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();
final Retrofit builder = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.baseUrl(ROOT)
.build();
REST_CLIENT = builder.create(API.class);
final Call<FreePlayers> request = REST_CLIENT.getFreePlayers(1);
request.enqueue(new Callback<FreePlayers>() {
@Override
public void onResponse(final Call<FreePlayers> call, final Response<FreePlayers> response) {
ArrayList<FreePlayers> players = null;
players = call;
ListView lv = (ListView) getView().findViewById(android.R.id.list);
JucatoriLiberiArrayAdapter adapter = new JucatoriLiberiArrayAdapter(getActivity(),
players);
lv.setAdapter(adapter);
}
@Override
public void onFailure(final Call<FreePlayers> call, final Throwable t) {
}
});
}
Мой API интерфейс:
public interface API {
@FormUrlEncoded
@POST("/fan-sport/app-test/")
Call<ArrayList<FreePlayers>> getFreePlayers(@Field("getFreePlayers") int freePlayers);
}
И это мой пользовательский адаптер:
public class JucatoriLiberiArrayAdapter extends BaseAdapter {
private Context context;
private ArrayList<FreePlayers> players;
public JucatoriLiberiArrayAdapter(Context context, ArrayList<FreePlayers> playersList) {
super();
this.context = context;
this.players = playersList;
}
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(final int position) {
return null;
}
@Override
public long getItemId(final int position) {
return 0;
}
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = inflater.inflate(R.layout.list_view_jucatori_liberi, null);
TextView playerName = (TextView) convertView.findViewById(R.id.name);
playerName.setText((CharSequence) players.get(position));
}
return convertView;
}
}