单击编辑时编辑列表项,并在Android中的上下文菜单中保存

时间:2013-02-11 11:52:57

标签: android listview android-edittext contextmenu

我使用的是Android v4。我创建了一个显示人物联系人的列表视图

  public class MainActivity extends Activity {

  public ListView mainListView ;
  public ArrayAdapter<String> listAdapter ;

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

    // Find the ListView resource. 
    mainListView = (ListView) findViewById( R.id.mainListView );
    String[] contacts = new String[] { "Adam", "James", "Alex", "Tom",
                                      "Horton", "Jim","Einstein","Thomson","Dick","Mascow"};  
    ArrayList<String> contactsList = new ArrayList<String>();
    contactsList.addAll( Arrays.asList(contacts) );

    listAdapter = new ArrayAdapter<String>(this, R.layout.rowview, contactsList);
    listAdapter.add( "Cameroon" );

    // Set the ArrayAdapter as the ListView's adapter.
    mainListView.setAdapter( listAdapter ); 
    registerForContextMenu(mainListView);  
}

长时间显示ContextMenu单击列表项。   Context_menu.xml如下,

 <?xml version="1.0" encoding="utf-8"?>
 <menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item 
   android:id="@+id/Edit"
   android:title="@string/Edit">
 </item> 

 <item
   android:id="@+id/Delete"
   android:title="@string/Delete">     
 </item> 

</menu>

单击“上下文菜单”中的“删除”时,我将从List中获取ListItem值,从而删除ListItem。我的Context Menu代码如下,

   public boolean onContextItemSelected(MenuItem item){
    AdapterContextMenuInfo info=(AdapterContextMenuInfo)item.getMenuInfo();
    switch(item.getItemId())
    {
    case R.id.Edit: 
        // Edit List Item and Save
        return true;
    case R.id.Delete:
        listAdapter.remove(listAdapter.getItem(info.position));
        Toast.makeText(this, "Deleted", Toast.LENGTH_SHORT).show();
    }

    return true;        
}

现在,我怀疑在单击“编辑”按钮并保存编辑的联系人时如何编辑特定的列表项。

我是Android新手,对处理事件一无所知。 请任何人帮忙!!

感谢。

1 个答案:

答案 0 :(得分:0)

你可以这样做

View view = yourListView.getChildAt(index - 
   yourListView.getFirstVisiblePosition());
TextView someText = ((TextView) view findViewById(R.id.textview01));
someText.setText("updated");