gpt4 book ai didi

android - 我如何在 Android 中将数据设置到适配器中

转载 作者:行者123 更新时间:2023-11-29 01:09:39 24 4
gpt4 key购买 nike

我想从服务器获取一些数据并将其显示到 Recyclerview 中。我可以显示此数据,但有时不显示此数据而只显示进度条。
我在 Log.e 中显示此数据并显示 faSTLy,但不在 RecyclerView 中显示此数据而仅显示进度。
请看下图了解我的意思:
Click too see

我的响应代码:

InterfaceApi api = ApiClient.getClient().create(InterfaceApi.class);
Call<CountryResponse> call = api.getCountryList();

call.enqueue(new Callback<CountryResponse>() {
@Override
public void onResponse(Call<CountryResponse> call, Response<CountryResponse> response) {
try {
if (response.body() != null) {
models.clear();
models.addAll(response.body().getData());
for (int i = 0; i <= models.size(); i++) {
Log.e("CountryInfoTAG", response.body().getData().get(i).getId() + " : " +
response.body().getData().get(i).getName());
}

countryProgress.setVisibility(View.GONE);
mAdapter = new CountryAdapter(models, context, listener);
countryRecycler.setAdapter(mAdapter);
}
} catch (Exception e) {
}
}

@Override
public void onFailure(Call<CountryResponse> call, Throwable t) {
Toasty.error(context, context.getResources().getString(R.string.failRequest),
Toast.LENGTH_LONG, true).show();
}
});

适配器代码:

public class CountryAdapter extends RecyclerView.Adapter {

private List<CountryDatum> mData;
private Context context;
private sendDataListener listner;

public CountryAdapter(List<CountryDatum> mData, Context context, sendDataListener listner) {
this.mData = mData;
this.context = context;
this.listner = listner;

}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerView.ViewHolder vh;
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_country, parent, false);
vh = new DataViewHolder(v);

return vh;
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
if (holder instanceof DataViewHolder) {
((DataViewHolder) holder).countryListTxt.setText(mData.get(position).getName() + "");
((DataViewHolder) holder).countryListTxt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listner.onSendIdName(mData.get(position).getId(), mData.get(position).getName());

if (context instanceof RegisterActivity) {
((RegisterActivity) context).dismissCountryDialog();
}
}
});
}
}

@Override
public int getItemCount() {
return mData.size();
}

public void add(List<CountryDatum> models) {
mData.addAll(models);
notifyDataSetChanged();
}

public void clear() {
mData.clear();
notifyDataSetChanged();
}

public class DataViewHolder extends RecyclerView.ViewHolder {
private TextView countryListTxt;

public DataViewHolder(View itemView) {
super(itemView);

countryListTxt = (TextView) itemView.findViewById(R.id.countryNameTxt);
}
}
}

我该如何解决?请帮助我

最佳答案

尝试用这个替换你的适配器:

public class CountryAdapter extends RecyclerView.Adapter<CountryAdapter.ViewHolder> {

private List<CountryDatum> mData;
private Context context;
private sendDataListener listner;

public CountryAdapter(List<CountryDatum> mData, Context context, sendDataListener listner) {
this.mData = mData;
this.context = context;
this.listner = listner;

}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_country, parent, false);

return new ViewHolder(v);
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
holder.countryListTxt.setText(mData.get(position).getName() + "");
holder.countryListTxt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listner.onSendIdName(mData.get(position).getId(), mData.get(position).getName());

if (context instanceof RegisterActivity) {
((RegisterActivity) context).dismissCountryDialog();
}
}
});
}

@Override
public int getItemCount() {
return mData.size();
}

public void add(List<CountryDatum> models) {
mData.addAll(models);
notifyDataSetChanged();
}

public void clear() {
mData.clear();
notifyDataSetChanged();
}

public class ViewHolder extends RecyclerView.ViewHolder {
public TextView countryListTxt;

public DataViewHolder(View itemView) {
super(itemView);

countryListTxt = (TextView) itemView.findViewById(R.id.countryNameTxt);
}
}

关于android - 我如何在 Android 中将数据设置到适配器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44141150/

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