0

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

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

2 回答 2

2

看来你没有设置变量。pos它是一个int变量,所以当你调用时它是0:

listItems.remove(pos);

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

于 2013-07-11T18:53:51.493 回答
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();
      }

    });
于 2013-07-11T18:58:11.067 回答