【问题标题】:How to show loading message in recyclerview如何在recyclerview中显示加载消息
【发布时间】:2017-10-19 20:54:19
【问题描述】:

我有一个 recyclerview,我想在回收器中填充来自 json 的数据时显示“正在加载...”消息或旋转圆圈。 这是我的回收站的代码:

 arrayList = new ArrayList<>();      
    adapter = new ListAdapterGrupat2(this, arrayList, Comanda.class);
    list.setAdapter(adapter);
    final Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("http://mysite/")
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    service = retrofit.create(API.class);  

    if (myuser.equals("1")) {
        service.getComenzileMele(user).enqueue(listener);

    } else {
        service.getComenziGrupat().enqueue(listener);
    }
}
Callback<List<CustomObject>> listener = new Callback<List<CustomObject>>() {

    @Override
    public void onResponse(Call<List<CustomObject>> call, Response<List<CustomObject>> response) {
        arrayList.clear();
        arrayList.addAll(response.body());
        adapter.notifyDataSetChanged();
    }

    @Override
    public void onFailure(Call<List<CustomObject>> call, Throwable t) {
        Toast.makeText(ComenziGrupatActivity.this, "ERROR", Toast.LENGTH_SHORT).show();           
    }
};

这是适配器:

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

public ListAdapterGrupat2(Context context, ArrayList<CustomObject> arrayList, Class<?> cls) {        
}

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

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    CustomObject obj = arrayList.get(position);
    holder.item2.setText(obj.getItem2());

}

【问题讨论】:

  • 我们需要您的适配器代码来执行此操作。
  • @deathangel908 我应该在哪里让它可见?

标签: java android android-recyclerview


【解决方案1】:

ProgressBar 添加到您的课程和布局中(靠近您的recicleView)。如果你想要文本:添加 LinearLayout 并在那里放置 ProgressBarTextView(在 linearLayout 上触发可见性):

ProgressBar bar;

发出请求时显示progressBar并隐藏recicleView:

bar.setVisibility(VISIBLE);
recicleView.setVisibility(GONE);     
service.getComenzileMele(user).enqueue(listener);

请求完成后隐藏progressBar并恢复recicleView:

Callback<List<CustomObject>> listener = new Callback<List<CustomObject>>() {

    @Override
    public void onResponse(Call<List<CustomObject>> call, Response<List<CustomObject>> response) {
        bar.setVisibility(GONE);
        recicleView.setVisibility(VISIBLE);
    }

    @Override
    public void onFailure(Call<List<CustomObject>> call, Throwable t) {
        bar.setVisibility(GONE);
        recicleView.setVisibility(VISIBLE);         
    }
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-27
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    相关资源
    最近更新 更多