RecyclerView shows everything except the first item

I have a RecyclerView where each element is a LinearLayout containing two EditTexts and ImageButton. RecyclerView shows every item except the first of my dataset.

Can someone tell me what is going on?

public class EditListAdapter extends RecyclerView.Adapter<EditListAdapter.ListViewHolder> {

private ArrayList mListCardset;

public static class ListViewHolder extends RecyclerView.ViewHolder{
    public EditText frontEditText;
    public EditText backEditText;
    public ImageButton editActionButton;

    public ListViewHolder(View view) {
        super(view);
        frontEditText = (EditText)view.findViewById(R.id.front_edit_text);
        backEditText = (EditText)view.findViewById(R.id.back_edit_text);
        editActionButton = (ImageButton) view.findViewById(R.id.edit_action_button);
    }
}

// Provide a suitable constructor (depends on the kind of dataset)
public EditListAdapter(ArrayList aList) {
    mListCardset = aList;
}

// Create new views (invoked by the layout manager)
@Override
public EditListAdapter.ListViewHolder onCreateViewHolder(ViewGroup parent,
                                                 int viewType) {
    // create a new view
    View v = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.card_edit_item, parent, false);
    // set the view size, margins, paddings and layout parameters

    ListViewHolder vh = new ListViewHolder((LinearLayout)v);
    return vh;
}

// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(ListViewHolder listHolder, int pos) {

    String[] eListItem = (String[]) mListCardset.get(pos); //get individual card @position
    listHolder.frontEditText.setText(eListItem[0]); 
    listHolder.backEditText.setText(eListItem[1]); 

}


private String[] strArrayListHelper(String frontString, String backString){
    String[] returnStrings = new String[2];
    returnStrings[0] = frontString;
    returnStrings[1] = backString;

    return returnStrings;
}

// Return the size of your dataset (invoked by the layout manager)
@Override
public int getItemCount() {
    return mListCardset.size();
}
}

This only displays items 2 through 5:

 mRecyclerView = (RecyclerView)findViewById(R.id.list_edit_recycler_view);

    ArrayList testListCards = new ArrayList<String[]>();
    testListCards.add(strArrayListHelper("Test 1","Test 1"));
    testListCards.add(strArrayListHelper("Test 2","Test 2"));
    testListCards.add(strArrayListHelper("Test 3","Test 3"));
    testListCards.add(strArrayListHelper("Test 4","Test 4"));
    testListCards.add(strArrayListHelper("Test 5","Test 5"));

    // use a linear layout manager
    mLayoutManager = new LinearLayoutManager(EditActivity.this);
    mRecyclerView.setLayoutManager(mLayoutManager);

    // specify an adapter
    mAdapter = new EditListAdapter(testListCards);
    mRecyclerView.setAdapter(mAdapter);
+4
source share
2 answers

There was no attribute in my layout files app:layout_behavior.

If someone else encounters a similar problem, I added app:layout_behavior="@string/appbar_scrolling_view_behavior"content to my layout so that the application panel pushes the content below, instead of overlapping it.

+1
source

, Toolbar RecyclerView.

android:layout_marginTop="?attr/actionBarSize"

RecyclerView XML.

, !

+4

All Articles