如何按ID删除ListView项目

时间:2013-07-11 18:36:01

标签: android android-listview position

我正在尝试按其ID删除ListView中的项目。目前,他们正被名单上的第一个职位删除。我可以在列表中有很多项目。(例子)当我尝试从列表中删除第六项时,第一项被删除,第六项仍然存在。 如何通过ID删除列表,例如m1aa或stringl1。我的数据库完全删除了string1,但它保留在列表中,除非它位于顶部位置。

int pos; 
long id;
final ListView lv = getListView();

我忘记将此添加到我的问题

ArrayList<String> listItems=new ArrayList<String>();
ArrayAdapter<String> adapter;


adapter=new ArrayAdapter<String>(this,
R.layout.singlelistview,listItems);
setListAdapter(adapter);

抱歉

Button button5 = (Button) dialogView.findViewById(R.id.button5);
button5.setOnClickListener(new OnClickListener(){
public void onClick(View v) {

TextView textviewlay1 =(TextView)findViewById(R.id.m1aa);
String stringl1 = textviewlay1.getText().toString();
Double doubl1 = Double.parseDouble(stringl1);


final String str=lv.getItemAtPosition(pos).toString();
Log.i("ListView", "onLongListItemClick string=" + str);
{listItems.remove(pos);
adapter.notifyDataSetChanged();}
controller1.deletename(stringl1);
}});

2 个答案:

答案 0 :(得分:2)

您似乎没有设置变量pos。它是int变量,因此在您致电时为0:

listItems.remove(pos);

结果第一项(它的索引等于0)将被删除。

答案 1 :(得分:1)

这种情况正在发生,因为getView()调用所有项目,然后单击按钮删除行,此时位置设置为最后一行,这就是每次删除最后一项的原因。您必须将位置设置为标记到按钮,并且在删除时您可以通过此标记获取索引。感谢

int pos; 
long id;
final ListView lv = getListView();

Button button5 = (Button) dialogView.findViewById(R.id.button5);
button5.setTag(pos);
button5.setOnClickListener(new OnClickListener(){
public void onClick(View v) {

TextView textviewlay1 =(TextView)findViewById(R.id.m1aa);
String stringl1 = textviewlay1.getText().toString();
Double doubl1 = Double.parseDouble(stringl1);


final String str=lv.getItemAtPosition((Button)v.getTag()).toString();
Log.i("ListView", "onLongListItemClick string=" + str);
{listItems.remove(String.vauleOf((Button)v.getTag()));
adapter.notifyDataSetChanged();}
controller1.deletename(stringl1);
}});

也可以通过onItemClickListener

完成
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

      @Override
      public void onItemClick(AdapterView<?> parent, final View view,
          int position, long id) {
        final String item = (String) parent.getItemAtPosition(position);
                list.remove(item);
                adapter.notifyDataSetChanged();
      }

    });