package com.example.diffrence;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
ListView listView;
ArrayAdapter<String> adapter;
Date date1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.list);
Timer notificationtask = new Timer();
// Define a new Adapter
// First parameter - Context
// Second parameter - Layout for the row
// Third parameter - ID of the TextView to which the data is written
// Forth - the Array of data
// Assign adapter to ListView
// adapter = new ArrayAdapter<String>(this,
// android.R.layout.simple_list_item_1, android.R.id.text1, values);
//
// listView.setAdapter(adapter);
// ListView Item Click Listener
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// ListView Clicked item index
int itemPosition = position;
// ListView Clicked item value
String itemValue = (String) listView
.getItemAtPosition(position);
// Show Alert
Toast.makeText(
getApplicationContext(),
"Position :" + itemPosition + " ListItem : "
+ itemValue, Toast.LENGTH_LONG).show();
}
});
Date now = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(now);
cal.add(Calendar.DAY_OF_YEAR, 1); // <--
final Date tomorrow = cal.getTime();
Calendar cal1 = Calendar.getInstance();
cal1.setTime(now);
cal1.add(Calendar.DAY_OF_YEAR, 50); // <-- pass the value of days you want
final Date lastdate = cal1.getTime();
final ArrayList<Date> date = (ArrayList<Date>) obtenerFechasDiariasIntervalo(tomorrow, lastdate);
final String[] values1 = new String[date.size()];
final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
"dd/M/yyyy hh:mm:ss");
for(int i= 0 ; i<date.size(); i++){
String currentDateandTime = simpleDateFormat
.format(new Date());
try {
date1 = simpleDateFormat
.parse(currentDateandTime);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Date date2 = date.get(i);
values1[i] = "diffrence to date "+date.get(i) + " : " +printDifference(date1, date2);
}
adapter = new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_list_item_1, android.R.id.text1, values1){
@Override
public View getView(int position, View convertView,
ViewGroup parent) {
TextView textView = (TextView) super.getView(
position, convertView, parent);
textView.setTextColor(Color.BLACK);
return textView;
}
};
listView.setAdapter(adapter);
notificationtask.schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
for(int i= 0 ; i<date.size(); i++){
String currentDateandTime = simpleDateFormat
.format(new Date());
Date date1 = simpleDateFormat
.parse(currentDateandTime);
Date date2 = date.get(i);
values1[i] = "diffrence to date "+date.get(i) + " : " +printDifference(date1, date2);
}
adapter.notifyDataSetChanged();
// txt.setText("time Remainig to date 10/10/2014 11:30:10 : "
// + printDifference(date1, date2));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}, 1000, 1000);
}
public static List<Date> obtenerFechasDiariasIntervalo(Date fechaInicial, Date fechaFinal)
{
List<Date> dates = new ArrayList<Date>();
Calendar calendar = new GregorianCalendar();
calendar.setTime(fechaInicial);
while (calendar.getTime().before(fechaFinal))
{
Date resultado = calendar.getTime();
dates.add(resultado);
calendar.add(Calendar.DATE, 1);
}
return dates;
}
public String printDifference(Date startDate, Date endDate) {
// milliseconds
long different = endDate.getTime() - startDate.getTime();
System.out.println("startDate : " + startDate);
System.out.println("endDate : " + endDate);
System.out.println("different : " + different);
long secondsInMilli = 1000;
long minutesInMilli = secondsInMilli * 60;
long hoursInMilli = minutesInMilli * 60;
long daysInMilli = hoursInMilli * 24;
long elapsedDays = different / daysInMilli;
different = different % daysInMilli;
long elapsedHours = different / hoursInMilli;
different = different % hoursInMilli;
long elapsedMinutes = different / minutesInMilli;
different = different % minutesInMilli;
long elapsedSeconds = different / secondsInMilli;
return Math.abs(elapsedDays) + " days " + Math.abs(elapsedHours)
+ " hours " + Math.abs(elapsedMinutes) + " minute "
+ Math.abs(elapsedSeconds) + " Seconds ";
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
android how to use calender with countdown timer in adapter class?
-
10-10-2022 - |
Question
i have a listview in which countdowntimer is working.,now i want to add use countdowntimer with calender.,in which time of calender should be countdown like reverse order..,i tried some code but that was working in forward way..,how can i use countdowntimer with calender in listview adapter.
public class CountDownList extends ListActivity {
private ArrayList<MyData> mDataList = new ArrayList<MyData>();
private Handler mHandler;
private ArrayAdapter<MyData> mListAdapter;
private boolean mCountersActive;
public CountDownList() {
mHandler = new Handler();
}
private final Runnable mRunnable = new Runnable() {
public void run() {
MyData myData;
// if counters are active
if (mCountersActive) {
if (mDataList != null) {
for (int i=0; i < mDataList.size(); i++) {
myData = mDataList.get(i);
if (myData.getCount() >= 0) {
myData.reduceCount();
}
}
// notify that data has been changed
mListAdapter.notifyDataSetChanged();
}
// update every second
mHandler.postDelayed(this, 1000);
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// add some test data
mDataList = new ArrayList<MyData>();
MyData data;
int j = 10;
for (int i=0; i < 1000; i++) {
data = new MyData(Integer.toString(j), j);
mDataList.add(data);
j = j + 10;
}
initData();
}
private void initData() {
// set the list adapter
mListAdapter = new MyListAdapter(this, R.layout.row, mDataList);
setListAdapter(mListAdapter);
// start counters
stopStart();
}
private void stopStart() {
if (mCountersActive) {
mCountersActive = false;
} else {
mCountersActive = true;
mHandler.post(mRunnable);
}
}
private class MyListAdapter extends ArrayAdapter<MyData> {
private ArrayList<MyData> items;
private LayoutInflater vi = (LayoutInflater)
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
public MyListAdapter(Context context, int textViewResourceId,
ArrayList<MyData> items) {
super(context, textViewResourceId, items);
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = vi.inflate(R.layout.row, null);
}
MyData myData = items.get(position);
if (myData != null) {
TextView text = (TextView) convertView.findViewById(R.id.myTextView);
if (text != null) {
text.setText(myData.getText());
}
TextView counter = (TextView) convertView.findViewById(R.id.myTextViewTwo);
if (counter != null) {
counter.setText(myData.getCountAsString());
}
}
return convertView;
}
}
private class MyData {
private String text;
private int count;
public MyData(String text, int count) {
this.text = text;
this.count = count;
}
public String getText() {
return text;
}
public int getCount() {
return count;
}
public String getCountAsString() {
return Integer.toString(count);
}
public void reduceCount() {
if (count > 0) {
count--;
}
}
}
}
Solution
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow