来自后端的数据未显示在 recyclerview 中

Data from backend not showing up in recyclerview

我正在尝试获取我放入 Backendless 控制台的数据并将其显示在我的 android 应用程序中,但数据没有显示。它只是显示一个空白 activity/screen。它也没有崩溃。坦率地说,如果是的话我会更高兴。任何帮助将不胜感激!

这是我的代码:

private List<Cake> list;
private Context context;

public CakeAdapter(Context context, List<Cake> list) {
    this.context = context;
    this.list = list;
}

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

@Override
public void onBindViewHolder(CakeHolder holder, int position) {

    final Cake cake = list.get(position);
    holder.type.setText(cake.getType());
    holder.description.setText(cake.getDescription());

    // holder.type.setText("I dont know.");
    // holder.description.setText("Just some random text. I am in the mood for pizza.");
}

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

public class CakeHolder extends RecyclerView.ViewHolder {
    //Setup Views
    CardView card;
    TextView type;
    TextView description;

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

        //Assign views by ID
        card = (CardView) itemView.findViewById(R.id.cakecard);
        type = (TextView) itemView.findViewById(R.id.type);
        description = (TextView) itemView.findViewById(R.id.description);
    }
}

}

public class CakeActivity 扩展 BaseActivity 实现 SwipeRefreshLayout.OnRefreshListener, FloatingActionButton.OnClickListener {

//Setup Views
private Toolbar toolbar;
private SwipeRefreshLayout swipe;
private FloatingActionButton fab;
private RecyclerView recycler;

//Setup adapter
private CakeAdapter adapter;

//Setup Cake
private List<Cake> Cake = new ArrayList<>();

//Setup backend call
private BackendlessCollection<Cake> cakes;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_Cake);

    //Setup toolbar
    toolbar = (Toolbar) findViewById(R.id.bar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);

    //Setup SwipeView
    swipe = (SwipeRefreshLayout) findViewById(R.id.swipe);
    swipe.setOnRefreshListener(this);
    swipe.setColorSchemeResources(R.color.colorPrimaryDark,
            R.color.blade,
            android.R.color.holo_orange_light,
            R.color.fruit);

    //Setup Recyclerview
    recycler = (RecyclerView) findViewById(R.id.recycler);
    recycler.setItemAnimator(new DefaultItemAnimator());
    recycler.setLayoutManager(new LinearLayoutManager(this));
    recycler.setHasFixedSize(true);
    adapter = new CakeAdapter(this, cake);
    recycler.setAdapter(adapter);

    //Setup FAB and attach to recycler
    fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.attachToRecyclerView(recycler);
    fab.setOnClickListener(this);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            supportFinishAfterTransition();
            return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override
public void onClick(View v) {
    //do something later
}

@Override
public void onRefresh() {
    refreshCakes();
    if (swipe.isRefreshing()) {
        swipe.setRefreshing(false);
    }
}

private void refreshCakes() {
    QueryOptions query = new QueryOptions();
    query.setPageSize(20);

    BackendlessDataQuery queries = new BackendlessDataQuery(query);

    Backendless.Data.of(Cake.class).find(queries, new AsyncCallback<BackendlessCollection<Cake>>() {
        @Override
        public void handleResponse(BackendlessCollection<Cake> cakeBackendlessCollection) {
            cakes = cakeBackendlessCollection;
            addMore(cakeBackendlessCollection);
        }

        @Override
        public void handleFault(BackendlessFault backendlessFault) {
            Log.d("Cake", "Error: " + backendlessFault.getMessage());
        }
    });

}

private void addMore(BackendlessCollection<Cake> next) {
    cake.addAll(next.getCurrentPage());
    adapter.notifyDataSetChanged();
}

}

好吧,我要复制 support topic 的答案:Backendless 上 table 的名称应该 完全匹配 您的名称class.

否则,您必须在程序开始的某处调用 Backendless.Data.mapTableToClass("YourTableName", YourClassName.class)