2011-01-08 85 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; 
    } 
} 
相關問題