如何从列表视图中删除项目并刷新它

时间:2014-01-12 06:37:49

标签: android-listview arraylist switch-statement contextmenu menuitem

我的作业需要一些帮助...... 我想用editText中的itens做一个listview ..但我不知道如何删除和编辑项目,我尝试使用ContextMenu。我会发布我的代码,如果你认为我必须改变任何东西,请告诉我..我是先生。

private Button bt;
private ListView lv;
private EditText et;
private ArrayList<String> Arraylt = new ArrayList<String>();

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

    bt = (Button)findViewById(R.id.bt);
    lv = (ListView)findViewById(R.id.lv);
    et = (EditText)findViewById(R.id.et);
    lv.setOnCreateContextMenuListener(this);

            lv.setOnItemClickListener(new OnItemClickListener() {  

             public void onItemClick(AdapterView<?> adapter, View view,  
                int posicao, long id) {
             Object o = lv.getItemAtPosition(posicao);
             et.setText(String.valueOf(o));
          bt.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            addadicionar();

        }
    });

}   


public void addadicionar() {
    Arraylt.add(et.getText().toString());
    lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Arraylt));
    et.setText("");
}

4 个答案:

答案 0 :(得分:0)

尝试从listItems(List)中删除该项,然后调用adapter.notifyDataSetChanged();

答案 1 :(得分:0)

嘿,这是我的记事本代码,它会帮助你......看看

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
if (v.getId()==R.id.listView1)
 {
                  MenuInflater inflater = getMenuInflater();
                  inflater.inflate(R.menu.main, menu);
              }
        }

@Override
public boolean onContextItemSelected(MenuItem item) {

AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();


              switch(item.getItemId()) {

                  case R.id.edit:
                    // edit stuff here
                        return true;
                  case R.id.delete:


ArrayAdapter <String> adapter=new ArrayAdapter<String>(menu.this,android.R.layout.simple_list_item_1,data);

 Cursor cursor2=mydb1.rawQuery("SELECT * FROM notes;", null);

                        data.remove(info);

                        lv.setAdapter(adapter);

                        cursor2.moveToPosition(info.position);
                       int id= cursor2.getInt(cursor2.getColumnIndex("id"));

    mydb1.delete("notes", "id=?", new String[]    {Integer.toString(id)});

list(view);   // this will refresh my list by calling my  display list method here        

                      return true;


                  default:

                      return super.onContextItemSelected(item);


              }

答案 2 :(得分:0)

试试这段代码:

//注意:您需要在res / menu文件夹中创建包含删除器和编辑器项目的xml文件

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
if (v.getId()==R.id.listView1)
 {
                  MenuInflater inflater = getMenuInflater();
                  inflater.inflate(R.menu.main, menu);
              }
        }

@Override
public boolean onContextItemSelected(MenuItem item) {

AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();


              switch(item.getItemId()) {

                  case R.id.Deletar:
                    // edit stuff here
                        return true;
                  case R.id.editar:


ArrayAdapter <String> adapter=new ArrayAdapter<String>(menu.this,android.R.layout.simple_list_item_1,data);


                        data.remove(info);

                        lv.setAdapter(adapter);

                       list(view);   // this will refresh my list by calling my  display //list method here        

                      return true;


                  default:

                      return super.onContextItemSelected(item);


              }

答案 3 :(得分:0)

是的,我赢了!..现在,我可以编辑和删除listview中的项目......

private Button bt;
private ListView lv;
private EditText et;
private ArrayList<String> Arraylt = new ArrayList<String>();

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

bt = (Button)findViewById(R.id.bt);
lv = (ListView)findViewById(R.id.lv);
et = (EditText)findViewById(R.id.et);
lv.setOnCreateContextMenuListener(this);

        lv.setOnItemClickListener(new OnItemClickListener() {  

         public void onItemClick(AdapterView<?> adapter, View view, int posicao, long id) {
         Object o = lv.getItemAtPosition(posicao);
         et.setText(String.valueOf(o));
         bt.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        addadicionar();

    }
});

}   


public void addadicionar() {
Arraylt.add(et.getText().toString());
lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Arraylt));
et.setText("");
}

抱歉这个坏缩进..

相关问题