2017-08-26 4 views
-1

私のアプリケーションでは、データベースから日付と名前のリストを取得し、1つのカードビューに名前を表示し、そのすぐ上に日付を表​​示します。私は同じ日付を共有する複数のレコードに対して1つの日付だけが表示されることが理にかなっていると判断しました。カードビューの表示と非表示

現在のところ、単純なカーソルを使用しているときはコードが正しく機能しますが、カーソルから離れて情報を得るために単純なゲッターを使いたいと思っています。

現在私の問題を引き起こしている以下のコードを追加しました。また、完全に動作するカーソルアダプタで使用したオリジナルバージョンでコメントしました。 currentDateカーソルの位置positionにあり、previousDateカーソルの位置position - 1にあるので

カーソルバージョンcurrentDatepreviousDate

if (position - 1 >= 0) { 

      String currentDate = alarmDetails.getAlarmDate(); 

      String previousDate = alarmDetails.getAlarmDate(); 


      // Cursor version 
      //String currentDate = cursor.getString(cursor.getColumnIndexOrThrow("complete_date")); 
      //cursor.moveToPosition(position - 1); 
      //String previousDate = cursor.getString(cursor.getColumnIndexOrThrow("complete_date")); 

      if (currentDate.equalsIgnoreCase(previousDate)) { 

       viewHolder.header.setVisibility(View.GONE); 
       viewHolder.cardView.setVisibility(View.GONE); 

      } else { 


       viewHolder.header.setVisibility(View.VISIBLE); 
       viewHolder.cardView.setVisibility(View.VISIBLE); 
       viewHolder.header.setText(currentDate); 

      } 


    } else { 


     viewHolder.header.setVisibility(View.VISIBLE); 
     viewHolder.cardView.setVisibility(View.VISIBLE); 
     viewHolder.header.setText(alarmDetails.getAlarmDate()); 

     Cursor Version 
     //viewholder.header.setText(cursor.getString(cursor.getColumnIndexOrThrow("complete_date"))); 


    } 

} 

答えて

0

ありがとうは異なっています。現在のバージョンcurrentDatepreviousDate

は常に同じであり、alarmDetails.getAlarmDate()に等しく、私はこの方法では、その後、のparamater alarmDetails.getAlarmDate(int position)として位置を取るべきだと思う:

String currentDate = alarmDetails.getAlarmDate(position); 

String previousDate = alarmDetails.getAlarmDate(position - 1); 

・ホープ、このことができます。

+0

こんにちは、お返事ありがとうございます、悲しいことに、問題は解決していませんが、引き続き検索しています – Steven