【问题标题】:Android textview visibility with recycle viewAndroid textview 可见性与 recyclerview
【发布时间】:2017-11-15 13:23:55
【问题描述】:

我已经设置了一个应用程序,它使用来自 SQL 数据库的信息来填充回收视图,例如日期和时间等...我最近设置了一个小部分,它可以显示或隐藏文本视图,具体取决于它上面的文本视图是否相同。例如,它将使用 13/06/2017 填充第一个 Textview 并使其可见,如果它想要显示的下一个日期相同,那么它将简单地隐藏 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();
}

欢迎提出建议

【问题讨论】:

  • 使用模型类并保存数据以进行隐藏和查看。
  • 所以你的意思是将文本视图的可见性存储在模态中,对吗?但是如何将信息传递给模型而不发生 onclick?
  • 你的代码中的cardView是什么,它是标题部分吗?
  • 所以您在显示 txtHeader 的其他条件下缺少带有标题的 cardView 可见性
  • 漂亮的 Pavan 完全错过了这一点,直奔视图持有者。您能否将其发布为答案并为您投票。

标签: android android-recyclerview adapter visibility android-viewholder


【解决方案1】:

您缺少 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")));
    }

【讨论】:

    猜你喜欢
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2016-09-18
    • 2012-04-21
    • 2016-04-11
    • 1970-01-01
    相关资源
    最近更新 更多