动态添加项目到listview

时间:2012-02-10 16:12:43

标签: android listview add long-click

我正在制作一个需要使用ListView的Android应用程序。一旦用户按下menubutton,它会弹出一个弹出窗口,其中包含TextView,EditText和两个按钮,“Ok”和“Cancel”。一旦用户按下“Ok”,EditText中的文本应该添加到ListView中。取消按钮很明显。我还希望能够长按ListView项目以打开包含删除按钮的弹出窗口。我怎样才能做到这一点?到目前为止我正在使用此代码:

public class NotesActivity extends ListActivity {
/** Called when the activity is first created. */
Button AddItemToListView;
  static final String[] COUNTRIES = new String[] {
      "Matte på A1 med Ole", "Engelsk på klasserommet", "Film på A1 etter friminuttet"
      };
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.notes);
    setListAdapter((ListAdapter) new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES));

    ListView lv = getListView();
    lv.setTextFilterEnabled(true);

    lv.setOnItemClickListener(new OnItemClickListener() {
      public void onItemClick(AdapterView<?> parent, View view,
          int position, long id) {
        // When clicked, show a toast with the TextView text
        Toast.makeText(getApplicationContext(), "Note: " + ((TextView) view).getText(),
            Toast.LENGTH_SHORT).show();
  }
    });
  }
@Override
public boolean onCreateOptionsMenu(Menu meny) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.listviewmenubuttons, meny);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()) {
    case R.id.AddItemToListView:
        Toast.makeText(NotesActivity.this,
                "Add note button pressed", Toast.LENGTH_SHORT)
                .show();
        break;
        }
    return true;
}
}

2 个答案:

答案 0 :(得分:0)

如果要在访问listview.setonlongclick()后添加功能,请尝试对对话框进行一些研究。这是android对话框开发人员的link

答案 1 :(得分:0)

由于您使用的是ArrayAdapter,因此当用户点击添加时,您必须将新项添加到数组中(从数组更改为List以使其更容易)。然后你应该从ArrayAdapter调用notifyDataSetChanged()。

对于删除是相同的,但您从列表中删除该项目。对notifyDataSetChanged()的调用是告诉ListView它需要重绘自己。