2013-09-06 3 views
0

Я пытаюсь сделать список дел. У меня есть EditText, Button и ListView. При нажатии кнопки я хочу добавить, что я ввел в EditText в ListView.Добавить пользовательский ввод в ListView при нажатии кнопки

main_activity.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
xmlns:android="http://schemas.android.com/apk/res/android"> 
<EditText 
    android:id="@+id/editText" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:hint="Enter task" 
    android:textSize="24dp" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" /> 
<Button 
    android:id="@+id/addTaskBtn" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Add Task" 
    android:layout_below="@+id/editText" 
    android:layout_alignParentLeft="true" /> 
<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="  Task" 
    android:id="@+id/header" 
    android:layout_below="@+id/addTaskBtn" 
    android:background="#5e5e5e" 
    android:textColor="#FFFFFF" 
    android:textSize="14dp"/> 
<ListView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/list" 
    android:layout_below="@+id/header" 
    android:layout_centerHorizontal="true" /> 

Main_ToDoList.java

package com.example.todolist; 
import android.app.Activity; 
import android.app.ListActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 

import java.util.ArrayList; 

public class Main_ToDoList extends Activity implements OnClickListener 
{ 
private Button btnAdd; 
private EditText et; 
private ListView lv; 
ArrayList<String> list = new ArrayList<String>(); 
ArrayAdapter<String> adapter; 

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

    btnAdd = (Button)findViewById(R.id.addTaskBtn); 
    btnAdd.setOnClickListener(this); 
    et = (EditText)findViewById(R.id.editText); 
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, list); 
    lv.setAdapter(adapter); 
} 
public void onClick(View v) 
{ 
    String input = et.getText().toString(); 
    if(input.length() > 0) 
    { 
     list.add(input); 
     adapter.notifyDataSetChanged(); 
    } 
} 
@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__to_do_list, menu); 
    return true; 
} 
} 

код не работает, новый для андроид развивается, и просто пытается создать простой To Do List , Спасибо за вашу помощь!

+1

Почему бы вам просто не сделать «adapter.add (input)»? – njzk2

+1

также, lv не инициализирован. для этого должен быть findViewById. – njzk2

ответ

2

Это должно сделать это.

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

    btnAdd = (Button)findViewById(R.id.addTaskBtn); 
    btnAdd.setOnClickListener(this); 
    et = (EditText)findViewById(R.id.editText); 
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, list); 

    // set the lv variable to your list in the xml 
    lv=(ListView)findViewById(R.id.list); 
    lv.setAdapter(adapter); 
} 
public void onClick(View v) 
{ 
    String input = et.getText().toString(); 
    if(input.length() > 0) 
    { 
     // add string to the adapter, not the listview 
     adapter.add(input); 
     // no need to call adapter.notifyDataSetChanged(); as it is done by the adapter.add() method 
    } 
} 
+0

Хорошо, спасибо. Еще один вопрос: как я могу применить удаление из списка? Поэтому добавлен пользовательский ввод, а затем, когда я нажимаю элемент, возможно появляется «попросить удалить». – JustAnotherUser32

+0

создайте еще одну кнопку, установите ее в новый view.onclicklistener, чтобы получить текст, а затем вызовите 'adapter.remove (input);' [подробнее] (http://developer.android.com/reference/android/widget /ArrayAdapter.html#remove(T)) – petey

+0

Я хотел бы создать onItemClickListener()? Итак, когда я нажимаю на конкретный элемент в списке, он будет удален? – JustAnotherUser32

2

вам нужно найти свой ListView и затем установите адаптер:

lv=(ListView)findViewById(android.R.id.yourlistview); 
    lv.setAdapter(adapter); 
+0

Спасибо. У меня было это в первый раз, а затем удалил его b/c, он не работал, как я его первоначально настраивал. – JustAnotherUser32

Смежные вопросы