[英]Compare time with mobile time
我的列表视图中有两个计时和一个按钮,它们之间的时差是10分钟。我想要的是我的移动时间到达newtime时必须单击才能单击的时间,以下是无法单击的代码:
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>
使用处理程序使按钮在10分钟后可点击。
伪代码应如下所示-
new Handler().postDelayed(new Runnable() {
public void run() {
viewholder.buy.setclickable(true);
}
}, 10*60*1000);
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();
使用countDownTimer满足您的要求。 当您的计时器结束时,它将给事件onFinish()。 这样就可以执行操作了。
倒数计时器可以解决您的问题,将sleepTime设置为倒数计时器10秒
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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.