GridView OnSwipeTouch und OnClick funktionieren nicht

  • 2 Antworten
  • Neuester Beitrag
Diskutiere GridView OnSwipeTouch und OnClick funktionieren nicht im Android App Entwicklung im Bereich Betriebssysteme & Apps.
kukuk

kukuk

App-Anbieter (kostenlos)
Hallo zusammen, ich stehe mal wieder vor einem "großen" Problem. Ich habe eine OnSwipeTouch Funktion für meinen Kalender (GridView) hinzugefügt. Diese Funktion funktioniert perfekt, allerdings geht die OnItemClick Funktion dann nicht mehr richtig. Egal wo ich in der Listview reinklicke, es wird immer nur das ganz links erste Element ausgewählt. Hat jemand einen Lösungsvorschlag parat? Ich habe in einigen Foren was gefunden, jedoch funktioniert die Lösungsvorschläge nicht.

Code:
gridview.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {


       TextView date = (TextView)v.findViewById(R.id.date);
        if(date instanceof TextView && !date.getText().equals("")) {

           Intent intent = new Intent();
           String day = date.getText().toString();
           if(day.length()==1) {
              day = "0"+day;
           }
           // return chosen date as string format
         Global.calendar_ausgewählter_tag =""+day+ android.text.format.DateFormat.format("dd.MM.yyyy", month).toString().substring(2, android.text.format.DateFormat.format("dd.MM.yyyy", month).toString().length());
         toast_information(""+Global.calendar_ausgewählter_tag);
         dialog_calendar_event_anzeigen();
      }

    }
});



gridview.setOnTouchListener(new OnSwipeTouchListener(rootView.getContext()) {

   public void onSwipeLeft() {

      if(month.get(Calendar.MONTH)== month.getActualMaximum(Calendar.MONTH)) {
         month.set((month.get(Calendar.YEAR)+1),month.getActualMinimum(Calendar.MONTH),1);
      } else {
         month.set(Calendar.MONTH,month.get(Calendar.MONTH)+1);
      }
      refreshCalendar();



   }
   public void onSwipeRight() {

      if(month.get(Calendar.MONTH)== month.getActualMinimum(Calendar.MONTH)) {
         month.set((month.get(Calendar.YEAR)-1),month.getActualMaximum(Calendar.MONTH),1);
      } else {
         month.set(Calendar.MONTH,month.get(Calendar.MONTH)-1);
      }
      refreshCalendar();


   }



});
 
Jaiel

Jaiel

Experte
Der View parameter in onItemClick repräsentiert das View das angeklickt wurde. In diesem befindet sich ja die Information des Datums als Text.

Code:
gridview.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
        if(v instanceof TextView && !((TextView)v).getText().equals("")) {
           String day = String.format("%02d",Integer.parseInt(((TextView)v).getText().toString()));

           // return chosen date as string format
         Global.calendar_ausgewählter_tag = day+ android.text.format.DateFormat.format("dd.MM.yyyy", month).toString().substring(2);
         toast_information(Global.calendar_ausgewählter_tag );
         dialog_calendar_event_anzeigen();
      }
    }
});
 
Zuletzt bearbeitet:
kukuk

kukuk

App-Anbieter (kostenlos)
Das Problem ist, das wenn ich z.B auf dem 28.03 klicke, sieht man, dass der 23 geklickt wird. Immer das erste Element in der Reihe in der man sich befindet.


Ich konnte das Problem lösen.

Im OnSwipeTouchListener.java muss bei onDown return false; Mit return true; kommt es zu dieser merkwürdigen Funktion.
Code:
@Override
public boolean onDown(MotionEvent e) {

    return false;
}
 
Zuletzt bearbeitet: