2012-11-25 114 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

相关问题