2017-05-11 2 views
0

Ich habe zwei Timings und eine Schaltfläche in meiner Listview.Difference zwischen ihnen ist 10 Min. Was ich will ist, wenn meine Handyzeit Newtime-Taste erreicht klickbar bis dann kann nicht angeklickt werden.Folgen ist meine Code-Vergleichen Sie Zeit mit Handy-Zeit

SecondCustom.java

public class SecondCustom extends BaseAdapter { 
    Activity a; 
    ArrayList<Model> timelist; 
    Date newtime; 
    Time itime,canceltime; 


    public SecondCustom(Activity a, ArrayList<Model> timelist) { 
     this.a = a; 
     this.timelist= timelist; 
    } 

    @Override 
    public int getCount() { 
     return timelist.size(); 
    } 

    @Override 
    public Object getItem(int i) { 
     return timelist.get(i); 
    } 

    @Override 
    public long getItemId(int i) { 
     return i; 
    } 



    public class Viewholder{ 
     TextView srno, ctime, ltime; 
     Button buy; 
    } 

    @Override 
    public View getView(final int i, View convertView, ViewGroup viewGroup) { 
     Viewholder viewholder=null; 
     if (convertView == null) { 
      viewholder = new Viewholder(); 
      LayoutInflater li = a.getLayoutInflater(); 
      convertView = li.inflate(R.layout.secondcustom, viewGroup, false); 

      viewholder.srno = (TextView) convertView.findViewById(R.id.sr); 
      viewholder.ctime = (TextView) convertView.findViewById(R.id.currenttime); 



      viewholder.buy = (Button) convertView.findViewById(R.id.st); 
      viewholder.ltime = (TextView) convertView.findViewById(R.id.lefttime); 
      convertView.setTag(viewholder); 
     } 
     else { 
      viewholder = (Viewholder) convertView.getTag(); 
     } 


     Model model=timelist.get(i); 
     viewholder.srno.setText(valueOf(timelist.get(i).getSr())); 



     String Time = DateFormat.getTimeInstance().format(new Date()); 
     viewholder.ctime.setText(Time); 

    Calendar cal = Calendar.getInstance(); 
     SimpleDateFormat sd = new SimpleDateFormat("HH:mm:ss a"); 

     cal.add(Calendar.MINUTE,10); 
    String FutTime= sd.format(cal.getTime()); 
     viewholder.ltime.setText(FutTime); 


     viewholder.buy.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Toast.makeText(a, "Purchased" + " " + flowerlist.get(i).getSr(), Toast.LENGTH_LONG).show(); 
       } 
      }); 

     return convertView; 
    } 
} 

secondcustom.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 


    <TextView 
     android:layout_width="50dp" 
     android:layout_height="40dp" 
     android:id="@+id/sr" 
     android:textSize="15dp" 
     android:textAlignment="center"/> 

    <TextView 
     android:layout_width="100dp" 
     android:layout_height="40dp" 
     android:id="@+id/currenttime" 
     android:textSize="15dp" 
     android:textAlignment="center"/> 

    <Button 
     android:layout_width="70dp" 
     android:layout_height="40dp" 
     android:id="@+id/st" 
     android:text="Buy" 
     android:textAllCaps="false" 
     android:textSize="15dp" 
     android:background="#57ba58" 
     android:textAlignment="center" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp"/> 

    <TextView 
     android:layout_width="100dp" 
     android:layout_height="40dp" 
     android:id="@+id/lefttime" 
     android:textSize="15dp" 
     android:textAlignment="center"/> 


</LinearLayout> 

Antwort

0

Verwenden Sie den Handler, um die Schaltfläche nach 10 Minuten klickbar zu machen.

Pseudo Code sollte wie folgt aussehen -

new Handler().postDelayed(new Runnable() { 
       public void run() { 
       viewholder.buy.setclickable(true); 

      } 
     }, 10*60*1000); 
+0

werden lösen Es werde den UI-Geck hinken. –

+0

Diese Lösung funktioniert, bis die App im Hintergrund ist. Wenn die App geschlossen ist, wird der Timer erneut gestartet.Wenn die App nach 10 Minuten geschlossen wird, muss sie nur angeklickt werden. – Neha

+0

Sie können Ihre Liste in sqlite ablegen und eine Spalte hinzufügen, um die Zeit zu verfolgen. Sie können dann die Zeitspalte in db zusammen mit der ListView-Schaltfläche aktualisieren, indem Sie jede Sekunde Handler, Timer usw. verwenden. Selbst wenn der Timer gelöscht wird, bleibt Ihr letztes Mal in db und Sie können den Countdown von der zuletzt gespeicherten Dauer beim Neustart der App auslösen. –

0
new CountDownTimer(30000, 1000) { 

    public void onTick(long millisUntilFinished) { 
     mTextField.setText("seconds remaining: " + millisUntilFinished/1000); 
     //here you can have your logic to set text to edittext 
    } 

    public void onFinish() { 
     mTextField.setText("done!"); 
    } 

}.start(); 

Verwenden countDownTimer für Ihre Anforderung. Wenn der Timer beendet ist, gibt er das Ereignis onFinish(). Auf diesem können Sie Ihre Operationen durchführen.

0

Ein Countdown-Timer kann 10sek Ihre problem.Set ein Countdown-Timer für sleeptime

viewholder.buy.setclickable(false); 
mCountDownTimer = new CountDownTimer(sleepTime, 1000) { 

       public void onTick(long millisUntilFinished) { 


        String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millisUntilFinished), 
          TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished)), 
          TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))); 
        txtTimer.setText(hms);//display the time 
       } 
       public void onFinish() { 
        txtTimer.setText("00:00:00"); 
        viewholder.buy.setclickable(true); 

       } 
      }.start(); 
+0

Countdown-Timer hat ein Problem, wenn wir App aus dem Hintergrund entfernen, dann wird Timer gestoppt und zurückgesetzt, wenn App erneut gestartet wird, also wollte es nicht implementieren. – Neha

+0

können Sie alarminent versuchen – Nidhin

Verwandte Themen