简体   繁体   中英

Android Studio add EditText input to a ListView with button onClick

I am trying to make a simple Planner app so I have an XML file with a ListView on it, and another XML file with an EditText and a sumbit button on it, and of course my Java files. I have done a ton of research but I can't find a working method to make it when I press the button, it adds the EditText stuff to the ListView as an item. Here is my code:

activity_main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <ListView
        android:layout_width="300dp"
        android:layout_height="fill_parent"
        android:id="@+id/event_list"
        android:layout_alignParentStart="true"
        android:layout_toStartOf="@+id/datePicker" />

    <DatePicker
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/datePicker"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true" />

    <CalendarView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/calendarView"
        android:layout_alignBottom="@+id/datePicker"
        android:layout_alignParentEnd="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Event"
        android:id="@+id/button"
        android:layout_centerVertical="true"
        android:layout_alignEnd="@+id/datePicker"
        android:layout_toEndOf="@+id/event_list"
        android:background="@android:color/holo_blue_light"
        android:onClick="newEvent"
        android:textSize="20dp"
        android:textColor="@android:color/white" />
</RelativeLayout>

new_plan.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:weightSum="1">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/event_name"
        android:hint="Event Name"
        android:inputType="textCapWords"/>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/event_date"
        android:hint="Event Date" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Save"
        android:id="@+id/button2"
        android:layout_gravity="center_horizontal"
        android:background="@android:color/holo_blue_light"
        android:textSize="20dp"
        android:textColor="@android:color/white" />

</LinearLayout>

MakePlan.java

package com.kass.planner;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class MakePlan extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.new_plan);
    }

}

MainActivity.java

    package com.kass.planner;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

import java.util.ArrayList;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void newEvent(View v){
        Intent i = new Intent(this, MakePlan.class);
        startActivity(i);}}

Please help, thank you.

Take a look on this google developers project. It's for animations but i think it also have the solution to your question.

https://developer.android.com/training/animation/layout.html

You should append data to the collection of items linked to your ListView via your adapter and notify your adapter that your data has changed. This illustration assumes that you have a List of String objects.

EditText editText = ...
List<String> list = ...
YourAdapter adapter = ...
ListView listView = ...

You must have done something like this to setup your listView.

 listView.setAdapter(new YourAdapter(list, this));

Now on button click you should get the String in EditText, add it to your List and finally notify the adapter that your data has changed in order to update your ListView for eg

void OnButtonClick(View view){
    String strToAdd = editText.getText().toString();
    list.add(strToAdd);
    adapter.notifyDataSetChanged();
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM