0

我已经设置了一个应用程序,它使用来自SQL数据库的信息填充回收视图,例如日期和时间等...我最近设置了一个小部分,显示或隐藏一个文本视图取决于它上面的文本视图是否相同。例如,它将填充第一个Textview和13/06/2017,并使其可见,如果它想显示的下一个日期是相同的,那么它将简单地隐藏文本视图,允许多个结果具有相同的日期堆叠在彼此之下。使用回收视图的Android textview可见性

问题 我的代码正常工作,因为它应该和它堆叠正确。我遇到的问题是,当我向下滚动页面时,所有标题消失。这是由于我没有正确设置我的viewHolder。你能否给我一些关于这种情况的指导。

绑定查看

代码允许多个副本的叠加导致

if (position - 1 >= 0) { 

String currentDate = cursor.getString(cursor.getColumnIndexOrThrow("complete_date")); 

cursor.moveToPosition(position - 1); 

String previousDate = cursor.getString(cursor.getColumnIndexOrThrow("complete_date")); 


Log.i("storedDates", currentDate);  

if (currentDate.equalsIgnoreCase(previousDate)) { 

txtHeader.setVisibility(View.GONE); 
cardView.setVisibility(View.GONE); 

} else { 


txtHeader.setVisibility(View.VISIBLE); 
txtHeader.setText(currentDate); 

} 

} else { 

txtHeader.setVisibility(View.VISIBLE); 
txtHeader.setText(cursor.getString(cursor.getColumnIndexOrThrow("complete_date"))); 
} 

开始ViewHolder

public static class Viewholder extends RecyclerView.ViewHolder{ 

    TextView header; 
    public Viewholder(View itemView) { 
     super(itemView); 

     header = (TextView) itemView.findViewById(R.id.txtHeader); 
    } 
} 

OncreateViewholder和OnBindViewHolder

@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

    View view = mCursorAdapter.newView(mContext,mCursorAdapter.getCursor(), parent); 

    return new Viewholder(view); 



} 

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 

    mCursorAdapter.getCursor().moveToPosition(position); 




    mCursorAdapter.bindView(holder.itemView, mContext, mCursorAdapter.getCursor()); 

} 






@Override 
public int getItemCount() { 
    return mCursorAdapter.getCount(); 
} 

任何建议都赞赏

+0

使用模型类,并保持数据隐藏和查看。 – Amy

+0

那么你的话说,存储模态权限textview的可见性?但是,如何将信息传递给模型并且不会发生onclick? – Steven

+0

什么是你的代码中的cardView是它的头部分? – Pavan

回答

0

你缺少cardView知名度所以在这里你设置txtHeader知名度还设置cardView知名度

if (position - 1 >= 0) { 

     String currentDate = cursor.getString(cursor.getColumnIndexOrThrow("complete_date")); 

     cursor.moveToPosition(position - 1); 

     String previousDate = cursor.getString(cursor.getColumnIndexOrThrow("complete_date")); 


     Log.i("storedDates", currentDate);  

     if (currentDate.equalsIgnoreCase(previousDate)) { 

      txtHeader.setVisibility(View.GONE); 
      cardView.setVisibility(View.GONE); 

     } else { 

      cardView.setVisibility(View.VISIBLE); 
      txtHeader.setVisibility(View.VISIBLE); 
      txtHeader.setText(currentDate); 

     } 

    } else { 
     cardView.setVisibility(View.VISIBLE); 
     txtHeader.setVisibility(View.VISIBLE); 
    txtHeader.setText(cursor.getString(cursor.getColumnIndexOrThrow("complete_date"))); 
    } 
相关问题