2016-05-13 6 views
-4

Ich möchte wissen, ob ihre Art ist zu prüfen, ob eine Taste X mal etwas geklickt wird. Zum Beispiel habe ich eine Schaltfläche in meiner Android-App und wenn ein Nutzer es mehr als 3 Mal klickt, möchte ich eine Anzeige zeigen. Der Code für mein Projekt ist unten. Ich glaube, es ist ein Weg, um es auf meinem onclcyclisten zu implementieren, aber nicht sicher, wie es geht.Android Button klicken

import android.content.Context; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageButton; 
import android.widget.TextView; 

import com.startapp.android.publish.StartAppAd; 


public class ClipAdapter extends BaseAdapter { 
    private StartAppAd startAppAd; 
    private GridActivity m_context; 
    private Soundboard m_soundboard; 
    private static LayoutInflater inflater=null; 


public ClipAdapter(GridActivity c, Soundboard s) { 
    m_context = c; 
    startAppAd = new StartAppAd(m_context); 
    m_soundboard = s; 
    inflater = (LayoutInflater)m_context. 
      getSystemService(Context.LAYOUT_INFLATER_SERVICE); 


} 

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return m_soundboard.getSize(); 
} 

@Override 
public Object getItem(int position) { 
    // TODO Auto-generated method stub 
    return m_soundboard.get(position); 
} 

@Override 
public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return 0; 
} 


@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    try { 
     final Clip c = m_soundboard.get(position); 
     View rowView; 

     if (c != null) { 
      rowView = inflater.inflate(R.layout.grid_item_layout, null); 
      TextView tv =(TextView) rowView.findViewById(R.id.textView); 
      ImageButton button=(ImageButton)   rowView.findViewById(R.id.imageButton); 
      //Button button = new Button(m_context); 
      //button.setHeight(24); 
      tv.setText(c.getTitle()); 
      m_context.registerForContextMenu(button); 
      button.setTag(c); 
      //button.getBackground().setColorFilter(new LightingColorFilter(0xffFFFFFF, 0xffFFFFFF)); 
      //button.setPadding(0,0,0,0); 
      button.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        m_context.play(c.getResourceId()); 
       } 
      }); 

      //return button; 
      return rowView; 
     } 
    } 
    catch (IndexOutOfBoundsException e) { 
     Log.e(getClass().getCanonicalName(), "No audio at position " 
       + position); 
    } 
    return null; 
} 

}

Antwort

0

DeFina eine Variable wie buttonClickTimes als integer und weisen 0. Innerhalb Ihres onClickListener Methode tun, um Ihre Arbeit und zu Beginn Ihrer onClickListener erhöhen es wie buttonClickTimes++ und legte eine if Anweisung in onClick Methode

so sollte der Code wie folgt sein:

Button button; 
button.setOnClickListener(buttonClickHandler); 
    View.OnClickListener buttonClickHandler= new View.OnClickListener() { 
    public void onClick(View v) { 
      buttonClickTimes++; 
      // do something when the button is clicked 



      if(buttonClickTimes == 3) 
       {//show your ad} 
     } 
    }; 

EDIT: put buttonClickTimes am Anfang Ihrer onClick Methode, da Sie die Anzeige anzeigen möchten, wenn die Schaltfläche dreimal geklickt hat.

+0

Nicht in der Hauptmethode (was ist das auch in Android?). Das 'if' geht auch in die 'onClick'-Methode, weil das genau ausgeführt wird. – zapl

+0

@zapl ich, in dieser Aktivität, indem ich main sage. Entschuldigung für das Missverständnis. –

+0

@zapl hat meine Antwort bearbeitet. –