2011-01-08 71 views
1

我试图让它当用户点击一个按钮时,弹出一个dialogEditText和一个确定Button。当用户完成对话时,它应该将加上他们刚输入的项目到ListView。我该怎么做呢?如何让用户添加和删除项目到ListView?

我将需要一个大的代码示例;这是我的第一个应用程序。

回答

2

你会想要遵循正式的记事本教程示例。这是非常全面的。它占了你想要做的95%。

http://developer.android.com/resources/tutorials/notepad/index.html

+0

我无法弄清楚如何使用它,并能够使用它显示在我的应用程序中的东西。 – Cg2916 2011-01-08 18:17:32

+0

我知道我需要一个SQLite数据库。我希望尽可能少的额外的东西。 – Cg2916 2011-01-08 22:09:10

1

那么这里是一个示例代码。有一个按钮可以在列表中添加文本,长按列表项可以将其删除。

activity_main.xml中

<LinearLayout 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" 
android:orientation="vertical" > 

<Button 
    android:id="@+id/button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:text="Add Item" /> 

<ListView 
    android:id="@+id/list_view" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 

dialog_layout.xml

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

<EditText 
    android:id="@+id/edit_box" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
    android:inputType="text" /> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
    android:orientation="horizontal" 
    android:weightSum="2" > 

    <Button 
     android:id="@+id/button_ok" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="OK" /> 

    <Button 
     android:id="@+id/button_cancel" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="CANCEL" /> 
</LinearLayout> 

MainActivity.java

package com.example.listexample; 

import java.util.ArrayList; 

import android.app.Activity; 
import android.app.Dialog; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemLongClickListener; 
import android.widget.BaseAdapter; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.TextView; 

public class MainActivity extends Activity implements OnClickListener, 
     OnItemLongClickListener { 

    private ArrayList<String> datasource; 
    private MyAdapter adapter; 
    private Dialog dialog; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     datasource = new ArrayList<String>(); 
     adapter = new MyAdapter(); 
     ListView listView = (ListView) findViewById(R.id.list_view); 
     listView.setAdapter(adapter); 
     listView.setOnItemLongClickListener(this); 

     findViewById(R.id.button).setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       dialog = new Dialog(MainActivity.this); 
       dialog.setContentView(R.layout.dialog_layout); 
       dialog.findViewById(R.id.button_cancel).setOnClickListener(
         MainActivity.this); 
       dialog.findViewById(R.id.button_ok).setOnClickListener(
         MainActivity.this); 
       dialog.show(); 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

    private class MyAdapter extends BaseAdapter { 

     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      return datasource.size(); 
     } 

     @Override 
     public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return datasource.get(position); 
     } 

     @Override 
     public long getItemId(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      TextView view = (TextView) convertView; 
      if (null == view) { 
       view = new TextView(MainActivity.this); 
       view.setPadding(10, 10, 10, 10); 
      } 
      view.setText(datasource.get(position)); 
      return view; 
     } 
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.button_cancel: 
      dialog.dismiss(); 
      break; 

     case R.id.button_ok: 
      String text = ((EditText) dialog.findViewById(R.id.edit_box)) 
        .getText().toString(); 
      if (null != text && 0 != text.compareTo("")) { 
       datasource.add(text); 
       dialog.dismiss(); 
       adapter.notifyDataSetChanged(); 
      } 

      break; 
     } 
    } 

    @Override 
    public boolean onItemLongClick(AdapterView<?> listView, View view, 
      int position, long column) { 
     datasource.remove(position); 
     adapter.notifyDataSetChanged(); 
     return true; 
    } 
} 
相关问题