RecyclerView错误:未连接适配器;跳过布局

时间:2019-05-29 14:18:49

标签: android recycler-adapter recyclerview-layout

我无法执行我的代码 我正在尝试获取数据库活动的列表。

这里有很多研究,没有答案对我有帮助

我的适配器

public class AtividadesAdapter extends RecyclerView.Adapter<AtividadesAdapter.AtividadesViewHolder> {


    private Context mCtx;
    private List<Atividades> atividadesList;

    public AtividadesAdapter(Context mCtx, List<Atividades> atividadesList) {
        this.mCtx = mCtx;
        this.atividadesList = atividadesList;
    }


    @Override
    public AtividadesViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(mCtx);
        View view = inflater.inflate(R.layout.atividades_lista, null);
        return new AtividadesViewHolder(view);
    }

    @Override
    public void onBindViewHolder(AtividadesViewHolder holder, int position) {
        Atividades atividades = atividadesList.get(position);
        holder.textViewAtividade.setText(atividades.getAtividade());
        holder.textViewData.setText(String.valueOf(atividades.getDataPrevista()));
        holder.textViewHora.setText(String.valueOf(atividades.getHora()));
        holder.textViewDestinatarios.setText(atividades.getDestinatarios());
    }

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

    class AtividadesViewHolder extends RecyclerView.ViewHolder {

        TextView textViewAtividade, textViewData, textViewHora, textViewDestinatarios;

        public AtividadesViewHolder(View itemView) {
            super(itemView);
            textViewAtividade = itemView.findViewById(R.id.textViewAtividade);
            textViewData = itemView.findViewById(R.id.textViewData);
            textViewHora = itemView.findViewById(R.id.textViewHora);
            textViewDestinatarios = itemView.findViewById(R.id.textViewDestinatarios);
        }
    }
}

我的活动

public class AtividadesActivity extends AppCompatActivity {

private static final String URL_ATIVIDADES = "";
List<Atividades> atividadesList = new ArrayList<>();
public RecyclerView recyclerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.atividadesrecyclerview);
        recyclerView = findViewById(R.id.recyclerView);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setHasFixedSize(true);
        loadAtividades();
    }

    private void loadAtividades() {
        StringRequest stringRequest = new StringRequest(Request.Method.GET, URL_ATIVIDADES,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONArray array = new JSONArray(response);
                            for (int i = 0; i < array.length(); i++) {
                                JSONObject a = array.getJSONObject(i);
                                Log.d("Valores", a.getString("Atividade"));
                                atividadesList.add(new Atividades(
                                        a.getInt("idAtividade"),
                                        a.getString("Atividade"),
                                        java.sql.Date.valueOf(a.getString("dataPrevista")),
                                        java.sql.Time.valueOf(a.getString("hora")),
                                        a.getString("Destinatarios"),
                                        a.getString("Local")
                                ));
                            }
                            AtividadesAdapter mAdapter = new AtividadesAdapter(AtividadesActivity.this, atividadesList);
                            recyclerView.setAdapter(mAdapter);

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {

                    }
                });
        Volley.newRequestQueue(this).add(stringRequest);
    }
}

每次我尝试启动应用程序时,都会出现此错误。 我已经更改了xml文件以使其与此处提供的示例匹配,但仍然没有成功。

3 个答案:

答案 0 :(得分:1)

根据您的问题和代码,我认为这会对您有所帮助。

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.atividadesrecyclerview);
        recyclerView = findViewById(R.id.recyclerView);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setHasFixedSize(true);
        AtividadesAdapter mAdapter = new AtividadesAdapter(getApplicationContext, atividadesList);
         recyclerView.setAdapter(mAdapter);
        loadAtividades();
}

答案 1 :(得分:1)

添加到适配器:

public AtividadesAdapter(Context mCtx) {
    this.mCtx = mCtx;
}

public void setItems(@NonNull final List<Atividades> items) {

    if (atividadesList != null) {
        atividadesList.clear();
    } else {
        atividadesList = new ArrayList<>();
    }
    atividadesList.addAll(items);
}

活动的onCreate应该如下:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.atividadesrecyclerview);
    recyclerView = findViewById(R.id.recyclerView);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    recyclerView.setHasFixedSize(true);
    mAdapter = new AtividadesAdapter(AtividadesActivity.this);
    recyclerView.setAdapter(mAdapter);
    loadAtividades();
}

在loadAtividades()中调用setItems:

mAdapter.setItems(atividadesList);

答案 2 :(得分:0)

请附加父母和其他人

@Override
public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
    return new AtividadesViewHolder(LayoutInflater.from(mCtx).inflate(R.layout.atividades_lista, parent, false));
}