2015-03-04 6 views
3

В моем приложении я получаю данные из базы данных sqlite и показываю их с помощью RecyclerView. Это мой адаптер: -RecyclerView ничего не показывает

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.Holder> { 

private List<SentData> dataList = Collections.emptyList(); 
private LayoutInflater inflater; 

public RecyclerViewAdapter(Context context, List<SentData> dataList) { 
    Log.d("array size", dataList.size()+""); 
    this.dataList = dataList; 
    inflater = LayoutInflater.from(context); 
} 

@Override 
public RecyclerViewAdapter.Holder onCreateViewHolder(ViewGroup viewGroup, int i) { 

    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.custom_list_row, viewGroup, false); 
    return new Holder(view); 
} 

@Override 
public void onBindViewHolder(RecyclerViewAdapter.Holder viewHolder, int position) { 
    SentData current = dataList.get(position); 

    Log.d("Required data is", current.circleName + current.retailName); 
    viewHolder.circleName.setText(current.circleName); 
    viewHolder.retailName.setText(current.retailName); 
    viewHolder.retailAddress.setText(current.retailAddress); 
    viewHolder.captureOn.setText(current.captureDate); 
} 

@Override 
public int getItemCount() { 
    return 0; 
} 


class Holder extends RecyclerView.ViewHolder { 

    private TextView retailName, retailAddress, circleName, captureOn; 

    public Holder(View itemView) { 
     super(itemView); 
     retailName = (TextView) itemView.findViewById(R.id.tvRetailerName); 
     retailAddress = (TextView) itemView.findViewById(R.id.tvRetailAddress); 
     circleName = (TextView) itemView.findViewById(R.id.tvCircleName); 
     captureOn = (TextView) itemView.findViewById(R.id.tvCaptureOn); 
    } 
} 

}

SentData представляет собой класс

public class SentData { 
String circleName, retailName, retailAddress, captureDate, syncId, detailId; 
} 

Я не получаю сообщение об ошибке, но список не отображается. Я пытаюсь проверить с помощью отладчика, я обнаружил, что метод onBindViewHolder() не работает.

В конструкторе RecyclerViewAdapter я получил размер списка данных 2, что означает, что данные успешно извлекаются из базы данных sqlite.

Теперь я не могу узнать, в чем проблема, и почему его не работает, пожалуйста, помогите мне. Заранее спасибо

ответ

1

Collections.emptyList() возвращает пустой список неизменны, вы должны использовать нового ArrayList <>() вместо этого.
После добавления/удаления данных из списка необходимо позвонить notifyDataSetChanged() для изменений, которые будут видно.
Также getItemCount() должен возвращать dataList.size()

0

Вы возвращаетесь 0 на getItemCount(). Убедитесь, что вы возвращаете размер списка, примыкающих к RecyclerView

0

Я также имел тот же код problem..Your вполне нормально, но она не отображается какой-либо список, потому что вы возвращаетесь в методе getItemCount() .Просто возвращение данныеList.size() в вашем случае и это wil work.

Смежные вопросы