我在本网站上发布了一些解决方案,因为我遇到的错误,但没有人帮助过我。 我明白了:
RecyclerView:没有连接适配器;跳过布局
我想要显示的RecycleView也是空的。 这是我的代码:
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
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
<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
<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>
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;
}
答案 0 :(得分:0)
确保绑定到适配器的列表不为空。您可以为适配器分配一个空列表并通知更新。此外,你没有添加变量&#34; curso&#34;到这里的列表:
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);
}