Bir sunucudan bir JSON ile bir ListView doldurmaya çalışıyorum. Verileri sunucudan alıyorum ancak ListView'e nasıl yerleştireceğimi anlayamıyorum. Aldığım hata onResponse'de.Retrofit 2'yi kullanarak Liste Görünümü'nü doldurun
Şöyle ki: "Hata: (84, 54) hatası: Sınıf JucatoriLiberiArrayAdapter içinde yapıcı JucatoriLiberiArrayAdapter verilen türlerine uygulanamaz; gerekli: Bağlam, ArrayList bulundu: gerçek argüman Çağrı> olamaz: FragmentActivity,> nedeni Çağrı ArrayList'e yöntem çağırma dönüşümü ile dönüştürülebilir "
Sanırım her bir Alt + Enter düzeltmeyi denedim. Ayrıca, Call<ArrayList<FreePlayers>
türünü yalnızca ArrayList<>
veya yalnızca Call<>
olarak değiştirmeye çalıştı.
@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) {
}
});
}
Benim API arayüzü:
Bu
benim sınıftırpublic interface API {
@FormUrlEncoded
@POST("/fan-sport/app-test/")
Call<ArrayList<FreePlayers>> getFreePlayers(@Field("getFreePlayers") int freePlayers);
}
Ve bu benim özel adaptör geçerli: In
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;
}
}