Ich sah, dass dies einmal um How to get current timestamp in Android without it updating like a clock gebeten wurde, aber es wurde nicht als beantwortet markiert und ich verstehe nicht die wenigen Vorschläge, die gegeben wurden.Wie kann ich SimpleDateFormat von der Aktualisierung der Zeit stoppen
Wie auch immer, ich bin neu in Java und folgte einem Tutorial auf eine einfache Todo-App (https://guides.codepath.com/android/Basic-Todo-App-Tutorial) und ich beschloss, einen Zeitstempel zu jedem Listenelement hinzuzufügen. Ich habe bis jetzt die aktuelle Zeit hinzugefügt, aber es ist nicht statisch. Die Zeit wird immer aktualisiert, wenn ich versuche, ein neues Element hinzuzufügen oder wenn ich die App schließe und erneut öffne. Ich kann die Antwort nirgendwo finden/finden. Diese
Hier ist der Code ist. MainActivity.java
public class MainActivity extends AppCompatActivity {
private ArrayList<String> items;
private ArrayAdapter<String> TodoAdapter;
private ListView lvItems;
private void readItems() {
File filesDir = getFilesDir();
File todoFile = new File(filesDir, "todo.txt");
try {
items = new ArrayList<String>(FileUtils.readLines(todoFile));
} catch (IOException e) {
items = new ArrayList<String>();
}
}
private void writeItems() {
File filesDir = getFilesDir();
File todoFile = new File(filesDir, "todo.txt");
try {
FileUtils.writeLines(todoFile, items);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
items = new ArrayList<String>();
readItems();
TodoAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_2, android.R.id.text1, items);
lvItems = (ListView) findViewById(R.id.lvItems);
lvItems.setAdapter(TodoAdapter);
// Setup remove listener method call
setupListViewListener();
}
// Attaches a long click listener to the listview
// Removes item on long press
private void setupListViewListener() {
lvItems.setOnItemLongClickListener(
new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapter, View item, int pos, long id) {
// Remove the item within array at position
items.remove(pos);
// Refresh the adapter
TodoAdapter.notifyDataSetChanged();
writeItems();
// Return true consumes the long click event (marks it handled)
return true;
}
});
}
public void onAddItem(View v) {
EditText etNewItem = (EditText) findViewById(R.id.etNewItem);
String itemText = etNewItem.getText().toString();
TodoAdapter.add(itemText); // Add items to new Adapter type
etNewItem.setText("");
writeItems();
}
}
TodoAdapter.java
public class TodoAdapter extends ArrayAdapter<Todo> {
public TodoAdapter(Context context, ArrayList<Todo> items) {
super(context, 0, items);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Todo item = getItem(position);
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(android.R.layout.simple_list_item_2, parent, false);
}
TextView text1 = (TextView) convertView.findViewById(android.R.id.text1);
TextView text2 = (TextView) convertView.findViewById(android.R.id.text2);
text1.setText(item.itemText);
text2.setText(item.getCreationTimeString());
text2.setTextSize(10);
return convertView;
}
}
Todo.java
public class Todo {
String itemText;
private Date creationTime;
public Todo(String text) {
this.itemText = text;
this.creationTime = new Date();
}
public String getCreationTimeString() {
return new SimpleDateFormat("h:mm a").format(creationTime);
}
}
Jede vorgesehen Hilfe werden sehr geschätzt würde. Bitte bedenke auch, dass ich buchstäblich kaum verstehe, was ich mache. :)
'new Date()' gibt immer das aktuelle Datum/Uhrzeit zum Zeitpunkt des Aufrufs zurück. – GriffeyDog
'new Date()' verwendet immer die aktuelle Systemzeit. – Zircon
Sie müssen das Erstellungsdatum der Aufgabe in der Datei speichern –