2016-09-01 6 views
1

Android에서 타이머 또는 알람 관리자를 사용하여 하루에 하나의 항목 만 선택하도록 사용자의 유효성을 검사해야합니다. 사용자가 하루에 두 개 이상의 항목을 가져 오지 않는지 쉽게 확인할 수 있도록 디자인하는 더 좋은 방법이 있습니까? 목록보기에 표시된 10 개의 항목 목록이 있습니다. 사용자가 목록에서 항목을 가져옵니다. 그는 단 하나의 아이템을 가져야한다. 그가 다시 시도하면 하루에 한 번만 한 항목을 경고해야합니다. 시간 사이 인 경우Android의 목록보기에서 하루에 한 번 유효성 확인

공용 클래스 MainActivity가 활동을 확장 {

@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; 
} 

}

답변

0

당신이 당신의 트리거 루프으로 매 30 분마다이

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 
} 

시도 않았다,이 코드를 확인합니다 자정, 자정 반. 따라서이 코드를 트리거에 넣고 if 내부에 마지막으로 루프가 실행 된 이후로 변경된 요일에 실행하려는 코드를 작성하십시오.

관련 문제