2016-09-01 2 views
1

Ich muss den Benutzer validieren, um nur einen Artikel pro Tag mit Timer oder Alarm-Manager in Android zu wählen. Gibt es einen besseren Weg, es zu entwerfen, so dass es einfach ist zu überprüfen, ob der Benutzer nicht mehr als einen Artikel pro Tag bekommt. Ich habe eine Liste mit zehn Elementen, die in einer Listenansicht angezeigt werden. Der Benutzer erhält ein Element aus der Liste. Er sollte nur einen Gegenstand bekommen. Wenn er es erneut versucht, sollte er nur einmal am Tag auf einen Gegenstand hingewiesen werden.Nur einmal pro Tag Validierung für den Benutzer aus einer Listenansicht in Android

public class MainActivity erstreckt Aktivität {

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

}

Antwort

0

haben Sie versucht, diese

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 
} 

Als Ihr Trigger-Schleife alle 30 Minuten, wird dieser Code überprüfen, ob die Zeit zwischen Mitternacht und Mitternacht und eine Hälfte. Setzen Sie diesen Code in Ihren Trigger und schreiben Sie innerhalb des if den Code, der ausgeführt werden soll, wenn sich der Tag seit dem letzten Durchlauf der Schleife geändert hat.

Verwandte Themen