Android 删除recyclerView的第一行

Android 删除recyclerView的第一行,android,adapter,android-recyclerview,android-viewholder,Android,Adapter,Android Recyclerview,Android Viewholder,我就是不明白为什么我的RecyclerView的第一行只显示空的xml布局 就像那一行的数据是空的一样。但是我有4行,即使我只有3条数据记录。(行大小由“数据记录”-List.size();)指定) 不管怎么说,我正在寻找解决办法。有人知道如何删除回收器视图的第一行吗?我是否只需要删除我的“数据记录”列表的第一项 你好,约翰 编辑代码: VotingHistoryFragment.java: public class VotingHistoryFragment extends Fragment

我就是不明白为什么我的RecyclerView的第一行只显示空的xml布局

就像那一行的数据是空的一样。但是我有4行,即使我只有3条数据记录。(行大小由“数据记录”-List.size();)指定)

不管怎么说,我正在寻找解决办法。有人知道如何删除回收器视图的第一行吗?我是否只需要删除我的“
数据记录”列表的第一项

你好,约翰

编辑代码:

VotingHistoryFragment.java:

public class VotingHistoryFragment extends Fragment implements VotingHistoryAdapter.ClickListener{

private Realm realm;
private FragmentStateHandler fragmentStateHandler;
private Backend backend;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    super.onCreateView(inflater, container, savedInstanceState);
    View layout = inflater.inflate(R.layout.voting_history_fragment_layout, container, false);
    HotFixRecyclerView hotFixRecyclerView = (HotFixRecyclerView) layout.findViewById(R.id.votingHistoryDrawerList);
    realm = Realm.getInstance(getActivity());
    fragmentStateHandler = FragmentStateHandler.getInstance();
    backend = Backend.getInstance();

    VotingHistoryAdapter votingHistoryAdapter = new VotingHistoryAdapter(getActivity());
    votingHistoryAdapter.setClickListener(this);
    hotFixRecyclerView.setAdapter(votingHistoryAdapter);
    hotFixRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
    return layout;
}

private RealmList<Voting> getVotingList() {
    RealmList<Voting> votingList = new RealmList<>();
    votingList.addAll(realm.where(Voting.class).equalTo(Constants.TAG_STATUS, false).findAllSorted(Constants.TAG_TIMESTAMP));
    return votingList;
}

@Override
public void itemClicked(View view, int position) {
    try {
        Voting current = getVotingList().get(position);
        Bundle b = new Bundle();
        b.putString(Constants.TAG_OWNER_ID, backend.loggedOwner.getId());
        b.putString(Constants.TAG_VOTING_ID, current.getId());
        fragmentStateHandler.replaceFrag(Frag.ARCHIVEDVOTINGFRAGMENT, b);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

@Override
public void onPause() {
    super.onPause();
    SharedPreferences prefs = getActivity().getSharedPreferences("X", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();
    editor.putString("lastActivity", getClass().getName());
    editor.apply();
}
}
公共类VotingHistoryFragment扩展片段实现VotingHistoryAdapter.ClickListener{
私人领域;
私有FragmentStateHandler FragmentStateHandler;
私有后端;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
super.onCreateView(充气机、容器、保存状态);
视图布局=充气机。充气(R.layout.voting\u history\u fragment\u layout,container,false);
hotfix回收视图hotfix回收视图=(hotfix回收视图)layout.findViewById(R.id.votingHistoryDrawerList);
realm=realm.getInstance(getActivity());
fragmentStateHandler=fragmentStateHandler.getInstance();
backend=backend.getInstance();
VotingHistoryAdapter VotingHistoryAdapter=新的VotingHistoryAdapter(getActivity());
votingHistoryAdapter.setClickListener(此);
hotFixRecyclerView.setAdapter(votingHistoryAdapter);
setLayoutManager(新的LinearLayoutManager(getActivity());
返回布局;
}
私有RealmList getVotingList(){
RealmList votingList=新的RealmList();
addAll(realm.where(Voting.class).equalTo(Constants.TAG_STATUS,false).findAllSorted(Constants.TAG_TIMESTAMP));
返回投票名单;
}
@凌驾
已单击公共无效项(视图,整数位置){
试一试{
表决电流=getVotingList().get(位置);
Bundle b=新Bundle();
b、 putString(Constants.TAG_OWNER_ID,backend.loggedOwner.getId());
b、 putString(Constants.TAG_VOTING_ID,current.getId());
fragmentStateHandler.replaceFrag(Frag.ARCHIVEDVOTINGFRAGMENT,b);
}捕获(例外e){
e、 printStackTrace();
}
}
@凌驾
公共无效暂停(){
super.onPause();
SharedReferences prefs=getActivity().getSharedReferences(“X”,Context.MODE\u PRIVATE);
SharedReferences.Editor=prefs.edit();
putString(“lastActivity”,getClass().getName());
editor.apply();
}
}
VotingHistoryAdapter.java:

public class VotingHistoryAdapter extends HotFixRecyclerView.Adapter <VotingHistoryAdapter.votingHistoryViewHolder>{
private final LayoutInflater    inflater;
private final RealmList<Voting> votingList;
private ClickListener   clickListener;
private final Realm     realm;
private int             increment;

public VotingHistoryAdapter(Context context) {
    inflater = LayoutInflater.from(context);
    realm = Realm.getInstance(context);
    realm.setAutoRefresh(false);

    // query votings
    RealmQuery<Voting> votingRealmQuery = realm.where(Voting.class);
    votingList = new RealmList<>();
    votingList.addAll(votingRealmQuery.equalTo("status", false).findAll());
    increment = 0;

}

@Override
public votingHistoryViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = inflater.inflate(R.layout.voting_history_row, parent, false);

    return new votingHistoryViewHolder(view);
}

@Override
public void onBindViewHolder(votingHistoryViewHolder holder, int position) {
    Voting current = votingList.get(position);

    RealmList<Idea> ideaRealmList = new RealmList<>();
    ideaRealmList.addAll(realm.where(Idea.class).equalTo(Constants.TAG_VOTING_ID, current.getId()).findAllSorted(Constants.TAG_VOTECOUNT, false));
    Idea winnerIdea = ideaRealmList.first();
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(current.getTimeStamp());

    int mYear = calendar.get(Calendar.YEAR);
    int mMonth = calendar.get(Calendar.MONTH);
    int mDay = calendar.get(Calendar.DAY_OF_MONTH);

    if(winnerIdea==null){Log.d("winnerIdea ", "Idea is null");  return;}

    try {
        Log.d("winnerIdea ", "position:" + position);
        Log.d("winnerIdea ", "titel:" + winnerIdea.getText());
        Log.d("winnerIdea ", "text:" + winnerIdea.getText());
        Log.d("winnerIdea ", "tag1:" + winnerIdea.getTags().get(0).getText());
        Log.d("winnerIdea ", "tag2:" + winnerIdea.getTags().get(1).getText());
        Log.d("winnerIdea ", "tag3:" + winnerIdea.getTags().get(2).getText());
        Log.d("winnerIdea ", "tag4:" + winnerIdea.getTags().get(3).getText());
        Log.d("winnerIdea ", "besitzer: " + winnerIdea.getOwner().getName());
        Log.d("winnerIdea ", "voteCount: " + winnerIdea.getVoteCount());
    } catch (Exception e) {
        e.printStackTrace();
        Log.d("winnerIdea ", "winnerIdea is null!!");
    }

    try {
        holder.voteCardNr.setText("  " + (++increment));
        holder.voteCardWinnerIdeaOwner.setText("  " + winnerIdea.getOwner().getName());
        try {
            holder.voteCardWinnerIdeaVotes.setText("  " + winnerIdea.getVoteCount());
        } catch (Exception e) {
            e.printStackTrace();
            holder.voteCardWinnerIdeaVotes.setText("  " + "0");
        }
            holder.voteCardWinnerIdea.setText("  " + winnerIdea.getTitle());
            holder.voteCardDatum.setText("  am " + mDay + "." + mMonth + "." + mYear);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public void setClickListener (ClickListener clickListener) {
    this.clickListener = clickListener;
}

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

class votingHistoryViewHolder extends HotFixRecyclerView.ViewHolder implements View.OnClickListener{
    TextView voteCardNr;
    TextView voteCardWinnerIdeaOwner;
    TextView voteCardWinnerIdea;
    TextView voteCardWinnerIdeaVotes;
    TextView voteCardDatum;

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

        itemView.setOnClickListener(this);
        VotingHistoryCardLayout layout = (VotingHistoryCardLayout) itemView.findViewById(R.id.voteRecycleCardLayout);

        List<TextView> views = layout.getVotingHistoryCards();

        try {
            voteCardNr = views.get(0);
            voteCardWinnerIdea = views.get(1);
            voteCardWinnerIdeaOwner = views.get(2);
            voteCardWinnerIdeaVotes = views.get(3);
            voteCardDatum = views.get(4);
        }catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onClick(View v) {
        if(clickListener != null) {
            clickListener.itemClicked(v, getAdapterPosition());
        }
    }
}

public interface ClickListener{
    void itemClicked(View view, int position);
}

}
公共类VotingHistoryAdapter扩展了HotFixRecyclerView.Adapter{
私人充气机;
私人最终RealmList投票名单;
私有ClickListener ClickListener;
私人最终领域;
私有整数增量;
公共VotingHistoryAdapter(上下文){
充气器=充气器。从(上下文);
realm=realm.getInstance(上下文);
realm.setAutoRefresh(false);
//查询投票
RealmQuery votingRealmQuery=realm.where(Voting.class);
votingList=新的RealmList();
addAll(votingRealmQuery.equalTo(“status”,false.findAll());
增量=0;
}
@凌驾
public votingHistoryViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图=充气机。充气(R.layout.voting\u history\u row,parent,false);
返回新的votingHistoryViewHolder(视图);
}
@凌驾
BindViewHolder上的公共无效(votingHistoryViewHolder,内部位置){
表决电流=votingList.get(位置);
RealmList ideaRealmList=新的RealmList();
ideaRealmList.addAll(realm.where(Idea.class).equalTo(Constants.TAG_VOTING_ID,current.getId()).findAllSorted(Constants.TAG_VOTECOUNT,false));
Idea winnerIdea=ideaRealmList.first();
日历=Calendar.getInstance();
calendar.setTimeInMillis(current.getTimeStamp());
int mYear=calendar.get(calendar.YEAR);
int mMonth=calendar.get(calendar.MONTH);
int mDay=calendar.get(calendar.DAY\u/u月);
if(winnerIdea==null){Log.d(“winnerIdea”,“Idea为null”);return;}
试一试{
Log.d(“winnerIdea”,“position:+position”);
Log.d(“winnerIdea”,“titel:+winnerIdea.getText());
Log.d(“winnerIdea”,“text:+winnerIdea.getText());
Log.d(“winnerIdea”,“tag1:”+winnerIdea.getTags().get(0.getText());
Log.d(“winnerIdea”,“tag2:+winnerIdea.getTags().get(1.getText());
Log.d(“winnerIdea”,“tag3:+winnerIdea.getTags().get(2.getText());
Log.d(“winnerIdea”,“tag4:+winnerIdea.getTags().get(3.getText());
Log.d(“winnerIdea”,“besitzer:+winnerIdea.getOwner().getName());
Log.d(“winnerIdea”、“voteCount:+winnerIdea.getVoteCount());
}捕获(例外e){
e、 printStackTrace();
Log.d(“winnerIdea”,“winnerIdea为空!!”;
}
试一试{
holder.voteCardNr.setText(“+(++增量));
holder.voteCardWinnerIdeOwner.setText(“+winnerIdea.getOwner().getName());
试一试{
holder.voteCardWinneRideAdoves.setText(“+winnerIdea.getVoteCount());
}捕获(例外e){
e、 printStackTrace();
holder.VOTECARDWINNERIDEADOVERS.SETEXT(“+”0”);
}
holder.votecardwineriedea.setText(“+winneriedea.getTitle());
holder.votecarddatam.setText(“am”+mDay+“+mMonth+”+mYear);
}捕获(例外e){
e、 printStackTrace();
}
}
公共无效设置ClickListener(ClickListener ClickListener){
this.clickListener=clickListener;
}
@凌驾
public int getItemCount(){
返回votingList.size();
}
类votingHistoryViewHolder扩展了HotFixRecyclerViewView.ViewHolder实现了View.OnClickListener{
TextView voteCardNr;
TextView VoteCardWinneRideOwner;
TextView voteCardWinnerIdea;
TextView VoteCardWinneRideAdoves;
TextView voteCardDatum;
公共v
   <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/asdasd">

<smoca.ch.kreagen.layouts.VotingHistoryCardLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/voteRecycleCardLayout"
    android:orientation="vertical"

    />

</LinearLayout>
public class VotingHistoryCardLayout extends LinearLayout{
    private ArrayList<TextView> views;

    // three different constructors to fit any kind of invoke
    public VotingHistoryCardLayout(Context context) {
        super(context);
        init();
    }

    public VotingHistoryCardLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public VotingHistoryCardLayout(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    // Initialize the Layout
    private void init() {
        views = new ArrayList<>();
        LayoutInflater li = LayoutInflater.from(getContext());

        // Dimension: 1x3
        LinearLayout newLayout = new LinearLayout(getContext());
        // set Orientation for each row
        newLayout.setGravity(Gravity.CENTER_HORIZONTAL);
        newLayout.setOrientation(LinearLayout.HORIZONTAL);
        this.addView(newLayout);

        // create new Card
        CardView card1 = (CardView) li.inflate(R.layout.voting_history_cards, newLayout, false);

        // set card color
        card1.setCardBackgroundColor(getResources().getColor(R.color.Green));

        // add Views to newLayout
        newLayout.addView(card1);

        views.add((TextView) findViewById(R.id.voteCardNrContent));     // index 0
        views.add((TextView)card1.findViewById(R.id.voteCardWinnerIdeaContent));    // index 1
        views.add((TextView)card1.findViewById(R.id.voteCardOwnerContent));     // index 2
        views.add((TextView)card1.findViewById(R.id.voteCardVotesContent));     // index 3
        views.add((TextView)card1.findViewById(R.id.voteCardDateContent));      // index 4
    }

public ArrayList<TextView> getVotingHistoryCards() {
    return views;
}

}
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView                xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardCornerRadius="8dp"
android:layout_margin="10dp"> <RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/label_nr"
    android:id="@+id/voteCardNrLabel"/>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="1"
    android:id="@+id/voteCardNrContent"
    android:layout_alignParentTop="true"
    android:layout_toEndOf="@+id/voteCardNrLabel" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/label_winnerIdea"
    android:id="@+id/voteCardWinnerIdeaLabel"
    android:layout_below="@+id/voteCardNrLabel"
    android:layout_alignStart="@+id/voteCardNrLabel" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="KreaGen"
    android:id="@+id/voteCardWinnerIdeaContent"
    android:layout_above="@+id/voteCardOwnerLabel"
    android:layout_toEndOf="@+id/voteCardWinnerIdeaLabel" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/label_winner"
    android:id="@+id/voteCardOwnerLabel"
    android:layout_below="@+id/voteCardWinnerIdeaLabel"
    android:layout_alignParentStart="true" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Joris"
    android:id="@+id/voteCardOwnerContent"
    android:layout_alignBaseline="@+id/voteCardOwnerLabel"
    android:layout_alignBottom="@+id/voteCardOwnerLabel"
    android:layout_toEndOf="@+id/voteCardOwnerLabel" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/label_Votes"
    android:id="@+id/voteCardVotesLabel"
    android:layout_below="@+id/voteCardOwnerLabel"
    android:layout_alignParentStart="true" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="0"
    android:id="@+id/voteCardVotesContent"
    android:layout_alignBaseline="@+id/voteCardVotesLabel"
    android:layout_alignBottom="@+id/voteCardVotesLabel"
    android:layout_toEndOf="@+id/voteCardVotesLabel" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/label_Date"
    android:id="@+id/voteCardDateLabel"
    android:layout_below="@+id/voteCardVotesLabel"
    android:layout_alignStart="@+id/voteCardVotesLabel" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="20.02.1997"
    android:id="@+id/voteCardDateContent"
    android:layout_below="@+id/voteCardVotesContent"
    android:layout_toEndOf="@+id/voteCardDateLabel" />
</RelativeLayout>
</android.support.v7.widget.CardView>
private RealmList<Voting> getVotingList() {
    RealmList<Voting> votingList = new RealmList<>();
    if(votingList.size() > 0){
        votingList.remove(0);
    }
    votingList.addAll(realm.where(Voting.class).equalTo(Constants.TAG_STATUS, false).findAllSorted(Constants.TAG_TIMESTAMP));
    return votingList;
}