2012-11-25 111 views
0

我的應用程序中我想單擊列表項並進行一些更改,如刪除或更新item.but但我無法實現其他代碼到我的code.so幾乎沒有幫助將是有用的。這裏是我的代碼 package com.example.todolist;點擊listview上的項目android

import java.util.ArrayList; 
import java.util.Collection; 

import android.os.Bundle; 
import android.provider.Contacts; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.content.DialogInterface.OnClickListener; 
import android.content.Intent; 
import android.speech.tts.TextToSpeech; 
import android.speech.tts.TextToSpeech.OnInitListener; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.View.OnKeyListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 
public class MainActivity extends Activity implements   OnClickListener,OnKeyListener,OnInitListener { 
EditText txtitem; 
ListView listitem; 
TextToSpeech talker; 
ArrayList<String> todolist; 
ArrayAdapter<String> arrayadapter; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    txtitem = (EditText) findViewById(R.id.txtitem); 
    listitem = (ListView) findViewById(R.id.listitem); 
    talker = new TextToSpeech(this, this); 
    txtitem.setOnKeyListener(this); 
    todolist = new ArrayList<String>(); 
    arrayadapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,todolist); 
    listitem.setAdapter(arrayadapter); 


    } 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(menu); 
    getMenuInflater().inflate(R.menu.main, menu); 
    MenuItem toAdd = menu.add("AddItem"); 
    MenuItem toDelete = menu.add("DeleteItem"); 
    MenuItem toSave = menu.add("SaveItem"); 
    MenuItem toExit = menu.add("ExitItem"); 
    MenuItem toUpdate = menu.add("UpdateItem"); 
    return true; 
} 

@Override 
public boolean onKey(View v, int keyCode, KeyEvent event) { 

    return false; 
} 

@Override 
public void onClick(DialogInterface dialog, int which) { 


} 

public boolean onOptionsItemSelected(MenuItem item){ 
    super.onOptionsItemSelected(item); 


     if(item.getTitle().equals("AddItem")){ 
      todolist.add(txtitem.getText().toString()); 
      arrayadapter.notifyDataSetChanged(); 
      txtitem.setText(""); 

     } 
     if(item.getTitle().equals("DeleteItem")){ 
      String x = txtitem.getText().toString(); 
      int y = Integer.parseInt(x); 
      todolist.remove(y-1); 
      arrayadapter.notifyDataSetChanged(); 
      txtitem.setText(""); 

     } 
     if(item.getTitle().equals("SaveItem")){ 
      say("Save Complete"); 
      arrayadapter.notifyDataSetChanged(); 
     } 
     if (item.getTitle().equals("ExitItem")){ 


      talker.speak("Are you sure you want to close this activity?",TextToSpeech.QUEUE_FLUSH,null);  
      onBackPressed(); 


      } 
     if(item.getTitle().equals("UpdateItem")){ 
      String x = txtitem.getText().toString(); 
      int y = Integer.parseInt(x); 

      arrayadapter.notifyDataSetChanged(); 
      txtitem.setText(todolist.get(y-1)); 
      todolist.remove(y-1); 

     } 
    return true; 

} 

public void say(String text2say){ 
    talker.speak(text2say, TextToSpeech.QUEUE_FLUSH, null); 
} 

@Override 
    public void onInit(int status) { 

} 
@Override 
public void onDestroy() { 
    if (talker != null) { 
     talker.stop(); 
     talker.shutdown(); 
} 

super.onDestroy(); 

} 
    } 
@Override 
public void onBackPressed() 
new AlertDialog.Builder(this) 
.setIcon(android.R.drawable.ic_dialog_alert) 
.setTitle("Closing Activity") 
.setMessage("Are you sure you want to close this activity?") 
.setPositiveButton("Yes", new DialogInterface.OnClickListener() 

    { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 

       finish(); 
       runOnUiThread(new Runnable() { 

        @Override 
        public void run() { 
         say("Bye"); 
        } 
       }); 
     } 

    }) 
    .setNegativeButton("No", null) 
    .show(); 

} 

這個代碼利用列表的elemnt號和它。但是刪除的我想點擊刪除或update.son一點幫助將useful.thank你已經

回答

3

從刪除所需的項目該列表使用您的ArrayAdapter的remove()方法。

一個可能的方式做到這一點是:

Object toRemove = arrayAdapter.getItem([POSITION]); 
arrayAdapter.remove(toRemove); 

另一種方法是修改ArrayList和調用notifyDataSetChanged()上一個ArrayAdapter。

arrayList.remove([INDEX]); 
arrayAdapter.notifyDataSetChanged(); 

添加項目,你可以做這樣的事情: 按鈕的點擊來自的EditText採取文字,並將其添加爲一個項目在列表

/** Reference to the button of the layout main.xml */ 
     Button btn = (Button) findViewById(R.id.btnAdd); 

     /** Defining the ArrayAdapter to set items to ListView */ 
     adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list); 

     /** Defining a click event listener for the button "Add" */ 
     OnClickListener listener = new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       EditText edit = (EditText) findViewById(R.id.txtItem); 
       list.add(edit.getText().toString()); 
       edit.setText(""); 
       adapter.notifyDataSetChanged(); 
      } 
     }; 

     /** Setting the event listener for the add button */ 
     btn.setOnClickListener(listener); 

這裏閱讀官方Android文檔12處理點擊菜單項...

+0

但我怎麼能把它與我的菜單按鈕綁定:D – nomad

+0

你可以使用'onOptionsItemSelected'在列表中添加新項目...看看這個鏈接http://stackoverflow.com/questions/7479992/處理一個菜單項目點擊事件安卓 – Shruti

+0

兄弟我已經試過了,但我不能這樣做。我的意思是我無法理解this.i的邏輯意味着我如何實現我的選項菜單按鈕來在項目點擊監聽器 – nomad

0

你想要做的是設置itemClickListener()。這是通過這樣的事情完成的:

list.setOnItemClickListner(new OnItemClickListener(){ 
    onItemClick(AdapterView<?> parent, View view, int position, long id) 
    { 
     //Do stuff here. 
    } 
}); 

從那個塊,你只需要調用你的delete語句。或者,您可以讓您的類使用AdapterView.OnItemClickListener接口,並將例程放在那裏,然後將命令更改爲list.setOnItemClickListner(this);

+0

但它不工作與我的菜單按鈕。這是主要問題 – nomad

相關問題