2017-05-08 5 views
-3

Ich habe derzeit ein GridView-Setup, das ein TextView beim Klicken mit getX() und getY() der Zelle onClick hinzufügt. Wenn ich versuchte, dies vom OnClickListener wegzubewegen, ist der für die getX() - und getY() -Werte der ZelleView zurückgegebene Wert immer 0.0 anstelle des Werts, der in der OnClick-Schnittstelle in OnclickListener angegeben ist. Wie kann ich den getX() bekommen, den ich in den onClickListener außerhalb des Listeners bekomme?getX() und getY() geben einen anderen Wert in OnClickListener zurück

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    View cellView; 
    LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    cellView = inflater.inflate(R.layout.cell_calendar, parent, false); 

    TextView textView = (TextView) cellView.findViewById(R.id.calendar_date); 
    textView.setText("" + dateArrayList.get(position).getDate()); 


    System.out.println(cellView.getX() + "/" + cellView.getY());  //Returns 0 

    cellView.setOnClickListener(new View.OnClickListener() { 


     public void onClick(View view) { 

      float buffer = bar1.getY(); 
      System.out.println(cellView.getX() + "/" + cellView.getY());   //Returns actual Location 
      addText(cellView.getX() + 15, cellView.getY() + buffer, "Test String"); 

     } 


}); 

public void addText(float x, float y, String textName) { 

    TextView mTextView = new TextView(context); 
    mTextView.setTextColor(Color.parseColor("#000000")); 
    mTextView.setText(textName); 
    mTextView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
    mTextView.setX(x); 
    mTextView.setY(y); 
    mTextView.setTextSize(mTextView.getTextSize() * .15f); 

    mContainer.addView(mTextView); 
} 
+0

code !! wir müssen den Code sehen ... –

Antwort

0

Ich habe das mit einem ViewTreeObserver behoben. Android hat bei der Erstellung alle Ansichten auf 0, aber mit ViewTreeObserver können Sie die Positionen abrufen, nachdem die Ansichten gezeichnet und ausgerichtet wurden.

0

Ich habe nicht verwendet Grid vor mir so verzeihen, wenn ich falsch liege, aber könnten Sie versuchen, mit setOnItemClickListener statt setOnClickListener?

Verwandte Themen