【发布时间】:2020-08-19 05:32:11
【问题描述】:
我正在创建一个生日提醒应用程序,该应用程序从主要活动开始,使用意图进入一个新活动,人们在那里选择生日,然后将选定的出生日期、月份和年份返回到主要活动。 然后在主活动中,我创建了一个新按钮,该按钮检索生日选择器活动发送的所有信息,并尝试在每次按下按钮时将其显示在列表活动中。
我面临的问题是,如果一旦我运行应用程序,生日就会被记录并显示在列表视图中,但是如果我添加另一个生日并尝试在列表视图中显示它,之前的记录会被删除,我只剩下目前的记录了。
我真正想知道的是如何在我的 listView 中添加项目,以便同时显示我以前的所有生日。
提供的代码文件如下: activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="10"
tools:context=".MainActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1"
android:background="#97B252D5">
<TextView
android:id="@+id/editText"
android:layout_width="213dp"
android:layout_height="52dp"
android:ems="10"
android:fontFamily="sans-serif-black"
android:text="Remindro"
android:textAllCaps="true"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:textSize="36sp"
android:textStyle="bold|italic"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.067"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/newEntry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#C1E6E60F"
android:fontFamily="sans-serif-black"
android:onClick="addNewEntry"
android:text="+ADD"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:textSize="30sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.88"
app:layout_constraintStart_toEndOf="@+id/editText"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.48" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="9"
android:background="#A071D4ED">
<ListView
android:id="@+id/list"
android:layout_width="410dp"
android:layout_height="596dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/viewRecord"
app:layout_constraintVertical_bias="0.0" />
<Button
android:id="@+id/viewRecord"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="#9650EC31"
android:onClick="viewRecord"
android:text="View Record"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/_dynamic"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
代码文件:MainActivity.java
package com.example.remindro;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "";
ArrayList<String> listItems = new ArrayList<String>();
ArrayAdapter<String> adapter;
Calendar calendar = Calendar.getInstance();
int thisYear = calendar.get(Calendar.YEAR);
int thisMonth = calendar.get(Calendar.MONTH) + 1;
int thisDay = calendar.get(Calendar.DAY_OF_MONTH);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
adapter=new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
listItems);
ListView records = (ListView) findViewById(R.id.list);
records.setAdapter(adapter);
}
public void addNewEntry(View v)
{
Intent adding = new Intent();
adding.setClass(this,addinglist.class);
startActivity(adding);
finish();
}
public void viewRecord(View v)
{
Intent receiver = getIntent();
int day = receiver.getIntExtra("day",0);
int month = receiver.getIntExtra("month",0);
int year = receiver.getIntExtra("year",0);
String name = receiver.getStringExtra("nameofperson");
String choice = receiver.getStringExtra("radio");
String mss = name + " has his " + choice + " on " + day + "/" + month + "/" + year;
//Toast.makeText(getApplicationContext(),mss,Toast.LENGTH_LONG).show();
int age = thisYear - year;
calendar.set(thisYear,thisMonth,thisDay);
Calendar calendar1 = Calendar.getInstance();
calendar1.set(thisYear,month,day);
long milliseconds1 = calendar.getTimeInMillis();
long milliseconds2 = calendar1.getTimeInMillis();
long diff = milliseconds2 - milliseconds1;
int noOfDays = (int) (diff / (24 * 60 * 60 * 1000));
String msg2 = "Turning " + age + " in " + noOfDays + "days!!";
// Toast.makeText(getApplicationContext(),msg2,Toast.LENGTH_LONG).show();
String finalMsg = mss + " " + msg2;
listItems.add(finalMsg);
adapter.notifyDataSetChanged();
}
}
activity_addinglist.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#8AEC9F18"
tools:context=".addinglist">
<NumberPicker
android:id="@+id/day"
android:layout_width="97dp"
android:layout_height="131dp"
android:background="#B5EA1241"
android:scaleX="1.3"
android:scaleY="1.3"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.298">
</NumberPicker>
<NumberPicker
android:id="@+id/month"
android:layout_width="97dp"
android:layout_height="131dp"
android:layout_marginStart="60dp"
android:layout_marginLeft="60dp"
android:background="#B5EA1241"
android:scaleX="1.3"
android:scaleY="1.3"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/day"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.298">
</NumberPicker>
<NumberPicker
android:id="@+id/year"
android:layout_width="97dp"
android:layout_height="131dp"
android:layout_marginStart="56dp"
android:layout_marginLeft="56dp"
android:background="#B5EA1241"
android:scaleX="1.3"
android:scaleY="1.3"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/month"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.298">
</NumberPicker>
<Button
android:id="@+id/submit"
android:layout_width="121dp"
android:layout_height="59dp"
android:layout_marginBottom="156dp"
android:background="#9A7CEF46"
android:onClick="addingEvent"
android:text="ADD Event"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<RadioGroup
android:id="@+id/typer"
android:layout_width="384dp"
android:layout_height="88dp"
app:layout_constraintBottom_toTopOf="@+id/submit"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.407"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/month"
app:layout_constraintVertical_bias="0.666">
<RadioButton
android:id="@+id/birthday"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Birthday"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<RadioButton
android:id="@+id/anniversary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Anniversary"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
</RadioGroup>
<EditText
android:id="@+id/name"
android:layout_width="413dp"
android:layout_height="53dp"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:hint="Enter the Name of the Person"
app:layout_constraintBottom_toTopOf="@+id/month"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.045"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.475" />
<EditText
android:id="@+id/resultshower"
android:layout_width="412dp"
android:layout_height="95dp"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.045"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/submit"
app:layout_constraintVertical_bias="0.518" />
</androidx.constraintlayout.widget.ConstraintLayout>
并添加list.java
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.NumberPicker;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Switch;
public class addinglist extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_addinglist);
NumberPicker day = (NumberPicker) findViewById(R.id.day);
NumberPicker month = (NumberPicker) findViewById((R.id.month));
NumberPicker year = (NumberPicker) findViewById(R.id.year);
day.setMinValue(1);
day.setMaxValue(31);
month.setMinValue(1);
month.setMaxValue(12);
year.setMinValue(1950);
year.setMaxValue(2020);
}
public void addingEvent(View v)
{
String name;
EditText nameEntered = (EditText) findViewById(R.id.name);
name = nameEntered.getText().toString();
NumberPicker day = (NumberPicker) findViewById(R.id.day);
NumberPicker month = (NumberPicker) findViewById((R.id.month));
NumberPicker year = (NumberPicker) findViewById(R.id.year);
int day1 = day.getValue();
int month1 = month.getValue();
int year1 = year.getValue();
RadioGroup typer = (RadioGroup) findViewById(R.id.typer);
int selectedId = typer.getCheckedRadioButtonId();
RadioButton checked = (RadioButton) findViewById(selectedId);
String typee = checked.getText().toString();
EditText resultbox = (EditText) findViewById(R.id.resultshower);
String Finalmsg = name + " has his " + typee + " on " + day1 + "/" + month1 + "/" + year1;
resultbox.setText(Finalmsg);
Intent newintent = new Intent();
newintent.putExtra("nameofperson",name);
newintent.putExtra("day",day1);
newintent.putExtra("month",month1);
newintent.putExtra("year",year1);
newintent.putExtra("radio",typee);
newintent.setClass(this,MainActivity.class);
startActivity(newintent);
}
}
提前感谢您抽出时间来解决此问题。
【问题讨论】:
标签: java android listview arraylist android-intent