简体   繁体   English

未连接适配器; 从RecycleView跳过布局

[英]No adapter attached; skipping layout from RecycleView

I tried some solutions posted on this website for the error I'm getting, but no one helped me. 我尝试了一些在此网站上发布的解决方案来解决我遇到的错误,但是没有人帮助我。 I get this: 我得到这个:

RecyclerView: No adapter attached; RecyclerView:未连接适配器; skipping layout 跳过布局

Also the RecycleView I want to display is empty. 我想显示的RecycleView也为空。 This is my code: 这是我的代码:

CardAdapter.java CardAdapter.java

public class CardAdapter extends RecyclerView.Adapter<CardAdapter.CartaViewHolder> {

private Context mainContext;
private  List<DBPronosticos> items;

public CardAdapter(List<DBPronosticos> items, Context contexto) {
    this.mainContext = contexto;
    this.items = items;
}

class CartaViewHolder extends RecyclerView.ViewHolder{
    public TextView tipster;
    public TextView fecha;
    public TextView apuesta;
    public TextView cuota;
    public TextView resultado;
    public TextView pronostico;
    public TextView encuentro;


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

        tipster = (TextView) itemView.findViewById(R.id.tipsterpronostico);
        fecha = (TextView) itemView.findViewById(R.id.fechapronostico);
        apuesta = (TextView) itemView.findViewById(R.id.dineropronostico);
        cuota = (TextView) itemView.findViewById(R.id.multiplicadorpronostico);
        resultado = (TextView) itemView.findViewById(R.id.elresultado);
        pronostico = (TextView) itemView.findViewById(R.id.elpronostico);
        encuentro = (TextView) itemView.findViewById(R.id.elencuentro);

    }
}
/**
 * creamos la card o targeta
 * @param viewGroup
 * @param viewType
 * @return
 */
@Override
public CartaViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {

    View v = LayoutInflater.from(viewGroup.getContext())
            .inflate(R.layout.pronostico, viewGroup, false);

    return new CartaViewHolder(v);
}

/**
 * Este metodo actualiza el RecyclerView.ViewHolder
 * @param viewHolder
 * @param position
 */
@Override
public void onBindViewHolder(CartaViewHolder viewHolder, int position) {
    DBPronosticos item = items.get(position);
    viewHolder.itemView.setTag(item);
    viewHolder.tipster.setText(item.getNombre_tipster());
    viewHolder.fecha.setText(item.getFecha());
    viewHolder.apuesta.setText(String.valueOf(item.getCantidad_apuesta()));
    viewHolder.cuota.setText(String.valueOf(item.getCuota()));
    viewHolder.resultado.setText("???");
    viewHolder.pronostico.setText(item.getApuesta());
    viewHolder.encuentro.setText(item.getEncuentro());


}

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


}

Pronosticos.java Pronosticos.java

public class Pronosticos extends Fragment {
ActionBar actionBar;
private AdView mAdView;
private List<DBPronosticos> listaItemsCursos;
private RecyclerView.LayoutManager lManager;
private RecyclerView recycler;
private CardAdapter adapter;
DataBase managerCurso;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    // Inflate the layout for this fragment

    return inflater.inflate(R.layout.fragment_pronosticos, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Toolbar toolbar = (android.support.v7.widget.Toolbar) view.findViewById(R.id.toolbar);
((MainActivity)getActivity()).setSupportActionBar(toolbar);
actionBar = ((MainActivity)getActivity()).getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
Drawable drawable = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_dehaze_black_24dp, null);
drawable = DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable, Color.WHITE);
actionBar.setHomeAsUpIndicator(drawable);
actionBar.setHomeAsUpIndicator(drawable);
((MainActivity) getActivity()).getSupportActionBar().setTitle("Pronosticos");
final FloatingActionMenu fab = (FloatingActionMenu) view.findViewById(R.id.actividadpronosticos);
fab.setClosedOnTouchOutside(true);
FloatingActionButton tip = (FloatingActionButton) view.findViewById(R.id.pronostico);
tip.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        Intent i = new Intent((MainActivity) getActivity(), AddPick.class);
        startActivity(i);
    }
});
managerCurso = new DataBase((MainActivity)getActivity());
listaItemsCursos = managerCurso.getCursosList();
// Obtener el Recycler
recycler = (RecyclerView) view.findViewById(R.id.reciclador);
recycler.setHasFixedSize(true);
// Usar un administrador para LinearLayout
lManager = new LinearLayoutManager((MainActivity)getActivity());
recycler.setLayoutManager(lManager);
// Crear un nuevo adaptador
adapter = new CardAdapter(listaItemsCursos, (MainActivity)getActivity());
recycler.setAdapter(adapter);
recycler.setItemAnimator(new DefaultItemAnimator());


}
}

pronostico.xml pronostico.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:orientation="vertical">

<android.support.v7.widget.CardView
    android:id="@+id/card2"
    android:layout_width="match_parent"
    android:layout_height="200dp">

    <RelativeLayout
        android:background="@drawable/shape"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <ImageView
        android:id="@+id/txt1"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:padding="10dp"
        android:adjustViewBounds="true"
        android:scaleType="centerCrop"
        android:src="@drawable/ic_action_name"
        android:text="Tipster" />

        <TextView
            android:text="Tipster"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tipsterpronostico"
            android:layout_marginBottom="11dp"
            android:layout_alignBottom="@+id/txt1"
            android:layout_toRightOf="@+id/txt1"
            android:layout_toEndOf="@+id/txt1" />

        <TextView
            android:text="Fecha"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/tipsterpronostico"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:layout_marginRight="25dp"
            android:layout_marginEnd="25dp"
            android:id="@+id/fechapronostico" />

        <TextView
            android:text="Apuesta"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textStyle="bold"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="48dp"
            android:id="@+id/apuestapronostico"
            android:layout_alignRight="@+id/tipsterpronostico"
            android:layout_alignEnd="@+id/tipsterpronostico" />

        <TextView
            android:layout_width="120dp"
            android:gravity="center"
            android:textSize="17dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="22dp"
            android:id="@+id/dineropronostico"
            android:text="300€"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />

        <TextView
            android:text="Cuota"
            android:textStyle="bold"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/cuotapronostico"
            android:layout_alignBaseline="@+id/apuestapronostico"
            android:layout_alignBottom="@+id/apuestapronostico"
            android:layout_centerHorizontal="true" />

        <TextView
            android:text="Pronóstico"
            android:textStyle="bold"
            android:gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/tipsterpronostico"
            android:id="@+id/elpronostico"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:layout_above="@+id/elencuentro" />

        <TextView
            android:text="Encuentro"
            android:gravity="center"
            android:layout_width="wrap_content"
            android:id="@+id/elencuentro"
            android:layout_height="40dp"
            android:layout_above="@+id/apuestapronostico"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />

        <TextView
            android:text="5.0"
            android:gravity="center"
            android:layout_height="wrap_content"
            android:id="@+id/multiplicadorpronostico"
            android:layout_width="120dp"
            android:layout_alignTop="@+id/dineropronostico"
            android:layout_centerHorizontal="true" />

        <TextView
            android:text="Resultado"
            android:layout_width="wrap_content"
            android:gravity="center"
            android:textStyle="bold"
            android:layout_height="wrap_content"
            android:id="@+id/resultadopronostico"
            android:layout_alignBaseline="@+id/cuotapronostico"
            android:layout_alignBottom="@+id/cuotapronostico"
            android:layout_alignRight="@+id/fechapronostico"
            android:layout_alignEnd="@+id/fechapronostico"
            android:layout_toRightOf="@+id/multiplicadorpronostico"
            android:layout_toEndOf="@+id/multiplicadorpronostico" />

        <TextView
            android:text="-300€"
            android:layout_width="wrap_content"
            android:gravity="center"
            android:layout_height="wrap_content"
            android:id="@+id/elresultado"
            android:layout_alignBaseline="@+id/multiplicadorpronostico"
            android:layout_alignBottom="@+id/multiplicadorpronostico"
            android:layout_alignRight="@+id/resultadopronostico"
            android:layout_alignEnd="@+id/resultadopronostico"
            android:layout_toRightOf="@+id/multiplicadorpronostico"
            android:layout_toEndOf="@+id/multiplicadorpronostico" />

    </RelativeLayout>
</android.support.v7.widget.CardView>

</LinearLayout>

fragment_pronosticos.xml fragment_pronosticos.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:fab="http://schemas.android.com/apk/res-auto"
android:layout_height="match_parent"
android:layout_width="match_parent">
<RelativeLayout
    android:layout_width="match_parent"
    android:id="@+id/relativo"
    android:layout_height="56dp">

    <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/toolbar"
        android:layout_height="match_parent"
        popupTheme="@style/ToolbarTheme"
        android:layout_width="match_parent"
        android:minHeight="?attr/actionBarSize"
        android:background="?attr/colorPrimary" />

</RelativeLayout>
<android.support.v7.widget.RecyclerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/reciclador"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="3dp"
    android:scrollbars="vertical"
    android:layout_below="@+id/relativo" />
<com.github.clans.fab.FloatingActionMenu
    android:id="@+id/actividadpronosticos"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_marginBottom="20dp"
    android:layout_marginLeft="11dp"
    android:layout_marginRight="11dp"
    fab:menu_animationDelayPerItem="55"
    fab:menu_backgroundColor="@android:color/transparent"
    fab:menu_buttonSpacing="0dp"
    fab:menu_colorNormal="#da3c2f"
    fab:menu_colorPressed="#dc4b3f"
    fab:menu_colorRipple="#99d4d4d4"
    fab:menu_fab_size="normal"
    fab:menu_icon="@drawable/fab_add"
    fab:menu_labels_colorNormal="#333"
    fab:menu_labels_colorPressed="#444"
    fab:menu_labels_colorRipple="#66efecec"
    fab:menu_labels_cornerRadius="3dp"
    fab:menu_labels_ellipsize="none"
    fab:menu_labels_hideAnimation="@anim/fab_slide_out_to_right"
    fab:menu_labels_margin="0dp"
    fab:menu_labels_maxLines="-1"
    fab:menu_labels_padding="8dp"
    fab:menu_labels_position="left"
    fab:menu_labels_showAnimation="@anim/fab_slide_in_from_right"
    fab:menu_labels_showShadow="true"
    fab:menu_labels_singleLine="false"
    fab:menu_labels_textColor="#f2f1f1"
    fab:menu_labels_textSize="15sp"
    fab:menu_openDirection="up"
    fab:menu_shadowRadius="4dp"
    fab:menu_shadowXOffset="1dp"
    fab:menu_shadowYOffset="4dp"
    fab:menu_showShadow="true">

    <com.github.clans.fab.FloatingActionButton
        android:id="@+id/pronostico"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/fab_add"
        fab:fab_label="Añadir Pronóstico"
        fab:fab_size="mini" />

</com.github.clans.fab.FloatingActionMenu>


</RelativeLayout>

Part of DataBase.java DataBase.java的一部分

public Cursor GetAllPickData()
{
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor c = db.rawQuery("SELECT * FROM pronostico;", null);
    return c;
}
public List<DBPronosticos> getCursosList(){
    List<DBPronosticos>  list= new ArrayList<>();

    Cursor c= this.GetAllPickData();


    while (c.moveToNext()){
        DBPronosticos curso = new DBPronosticos();

        curso.setFecha(c.getString(1));
        curso.setNombre_tipster(c.getString(3));
        curso.setEncuentro(c.getString(4));
        curso.setApuesta(c.getString(4));
        curso.setCuota(c.getDouble(4));
        curso.setCantidad_apuesta(c.getDouble(4));
        curso.setResultado(c.getString(4));
    }

    return list;

}

Make sure the list you are binding to the adapter is not null. 确保绑定到适配器的列表不为空。 You can assign a empty list to the adapter and notify the update. 您可以为适配器分配一个空列表并通知更新。 Besides, you are not adding the variable "curso" to the list in here: 此外,您没有在此处的列表中添加变量“ curso”:

while (c.moveToNext()){
    DBPronosticos curso = new DBPronosticos();

    curso.setFecha(c.getString(1));
    curso.setNombre_tipster(c.getString(3));
    curso.setEncuentro(c.getString(4));
    curso.setApuesta(c.getString(4));
    curso.setCuota(c.getDouble(4));
    curso.setCantidad_apuesta(c.getDouble(4));
    curso.setResultado(c.getString(4));

   //Add this line  
   list.add(curso);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM