2012-09-14 33 views
4

我做了一个列表视图,在标题处添加一个编辑文本字段list.And它工作正常,并成功地添加项目。然后我尝试调用这个listview并设置适配器。 现在我想要的是当我点击它应该被删除的项目,但它的获取力被关闭。这里是我的代码:通过点击列表视图中的任何项目删除项目

public class AddDeleteItemActivity extends ListActivity { 
public ListView listViewCity; 
public Context ctx; 

ArrayList list = new ArrayList(); 

ArrayAdapter adapter; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.main); 

    Button btn = (Button) findViewById(R.id.btnAdd); 
    ctx=this; 


    adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, list); 

    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(); 
     } 
    }; 


    listViewCity = (ListView) findViewById(R.id.list); 
    listViewCity.setAdapter(adapter); 

    listViewCity.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> a, View v, int position, long id) { 

       Toast.makeText(getApplicationContext(), " " +position , Toast.LENGTH_LONG).show(); 
       SparseBooleanArray checkedItemPositions = getListView().getCheckedItemPositions(); 
       int itemCount = getListView().getCount(); 

       for(int i=itemCount-1; i >= 0; i--){ 
        if(checkedItemPositions.get(i)){ 
         adapter.remove(list.get(i)); 
        } 
       } 
       adapter.notifyDataSetChanged(); 
     } 

    }); 


    btn.setOnClickListener(listener); 

    setListAdapter(adapter); 
} 
} 
+0

嗨,你为什么要删除你的游戏开发问题? – Talha

+0

所有投票都没有帮助......这是嘲笑 – MBMJ

+0

只是试着问不同的风格。 – Talha

回答

5

尝试这种方式

listViewCity.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> a, View v, int position, long id) { 

       Toast.makeText(getApplicationContext(), " " +position , Toast.LENGTH_LONG).show(); 
       list.remove(position); 
       adapter.notifyDataSetChanged(); 
       adapter.notifyDataSetInvalidated(); 
     } 

    }); 

从列表中删除,并使用编辑

适配器通知

为什么要使用这条语句刷新列表当您扩展ListActivity时

listViewCity = (ListView) findViewById(R.id.list); 

您可以使用getListView()来扩展ListActivity或扩展Activity而不是ListActivity来获取ListView对象。

+0

no.it不起作用 – MBMJ