gpt4 book ai didi

java - 每天仅从 Android ListView 中为用户验证一次

转载 作者:太空宇宙 更新时间:2023-11-04 12:17:06 26 4
gpt4 key购买 nike

我需要使用 Android 中的计时器或闹钟管理器验证用户每天仅选择一项。有没有更好的方法来设计它,以便可以轻松检查用户是否每天获得的元素不超过一件。我在 ListView 中显示了包含十个项目的列表。用户从列表中获取一个项目。他应该只得到一件元素。如果他再次尝试,则应该每天仅提醒他一次该项目。

公共(public)类 MainActivity 扩展 Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Effects.getInstance().init(this);
ListView lv = (ListView) findViewById(R.id.listView);

List<ItemDetail> itemList = createItems(10);

// Load animation
final Animation anim = AnimationUtils.loadAnimation(this, R.anim.fade_anim);

final ArrayAdapter<ItemDetail> aAdpt = new ArrayAdapter<ItemDetail>(this, android.R.layout.simple_list_item_1,
itemList);
lv.setAdapter(aAdpt);

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> adapterView, final View view, final int position, long id) {
MediaPlayer mPlayer = MediaPlayer.create(MainActivity.this, R.raw.gum_bubble_pop);
mPlayer.start();
anim.setAnimationListener(new Animation.AnimationListener() {

@Override
public void onAnimationStart(Animation animation) {
}

@Override
public void onAnimationRepeat(Animation animation) {

}

@Override
public void onAnimationEnd(Animation animation) {

long now = System.currentTimeMillis();
long lastCheckedMillis = 0;
long diffMillis = now - lastCheckedMillis;
if( diffMillis >= (3600000 * 24) ) {
// store now (i.e. in shared prefs)

// do the check
} else {
// too early
}



if(aAdpt.getCount()==9) {
Toast.makeText(MainActivity.this, "You can get only one gift per day "+now, Toast.LENGTH_LONG).show();
}
else {
ItemDetail item = aAdpt.getItem(position);
aAdpt.remove(item);
}
}
});
view.startAnimation(anim);

}
});

}

private List<ItemDetail> createItems(int size) {
List<ItemDetail> result = new ArrayList<ItemDetail>();
for (int i = 0; i < size; i++) {
ItemDetail item = new ItemDetail(i, "Gift " + (i + 1));
result.add(item);
}

return result;
}

}

最佳答案

你试过这个吗

Calendar c = Calendar.getInstance();
int hours = c.get(Calendar.HOUR_OF_DAY);
int minutes = c.get(Calendar.MINUTE);
int seconds = c.get(Calendar.SECOND);

if(hours*3600 + minutes*60 + seconds < 1800){
// Day changed since last task
}

由于触发器每 30 分钟循环一次,此代码将检查时间是否在午夜和午夜半之间。因此,将此代码放入触发器中,并在 if 内写入您希望在自上次循环运行以来日期发生变化时执行的代码。

关于java - 每天仅从 Android ListView 中为用户验证一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39275412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com