GridView OnSwipeTouch und OnClick funktionieren nicht

kukuk

kukuk

App-Anbieter (kostenlos)
29
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();


   }



});
 
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:
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:

Ähnliche Themen

C
  • CoderboyPB
Antworten
3
Aufrufe
928
swa00
swa00
SaniMatthias
Antworten
19
Aufrufe
962
swa00
swa00
M
  • MikelKatzengreis
Antworten
5
Aufrufe
136
swa00
swa00
Zurück
Oben Unten