【问题标题】:delete a row from a listview android从listview android中删除一行
【发布时间】:2014-08-02 03:10:03
【问题描述】:

我的列表视图的每一行都有三个文本视图和一个按钮,单击按钮时我想从列表视图中删除特定的行。我尝试了很多代码,但没有任何成功。请帮忙。提前谢谢!!!

VivzAdapter adapter=new VivzAdapter(this,foodname,quantity,amount);
view.setAdapter(adapter);
view.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<?> parent, View view2,
   int position, long id) {
  int itemPosition     = position;}
}); 

}

}
class VivzAdapter extends ArrayAdapter<String>
{
String[] t;
String[] u;
String[] d;
Context context;

VivzAdapter(Context c,String[] foodname,String [] quantity,String[] amount)

{

    super(c,R.layout.listviewcustom,R.id.tv1,foodname);
    this.context=c;
    this.t=foodname;
    this.u=quantity;
    this.d=amount;



}



@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    LayoutInflater inflater=(LayoutInflater)       context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View row=inflater.inflate(R.layout.listviewcustom,parent,false);
    TextView t1=(TextView) row.findViewById(R.id.tv1);
    TextView t2=(TextView) row.findViewById(R.id.tv2);
    TextView t3=(TextView) row.findViewById(R.id.tv3);
     Button b=(Button)row.findViewById(R.id.cancelbutton);
     b.setOnClickListener(new View.OnClickListener() {


        @Override
        public void onClick(View arg0) {

        }


        });

    t1.setText(t[position]);
    t2.setText(u[position]);
    t3.setText(d[position]);



    return row;
}

}

【问题讨论】:

  • 我看不出您实际上是在哪里尝试删除任何内容。请发布这些代码以及发生/不会发生的情况,包括错误。
  • 我有一个按钮 b 点击它我想从列表视图中删除一行我尝试了 adapter.remove 但没用!!!
  • 从数组中删除项目,然后使用 notifyDataSetChange 方法重绘列表视图
  • 喜欢这个 VivzAdapter.this.notifyDataSetChanged();法罗克??
  • 滚动到你的空onClick()?

标签: android listview android-listview android-arrayadapter


【解决方案1】:

使用这个:

 final int listItemPosition = position;
 Button b=(Button)row.findViewById(R.id.cancelbutton);
 b.setOnClickListener(new View.OnClickListener() {


    @Override
    public void onClick(View arg0) {

    foodname.remove(listItemPosition);
    VivzAdapter.this.notifyDataSetChanged();

    }


    });

请注意,您可以只删除 foodname 因为它刚刚传递给超级构造函数,我认为您应该 声明对象并将该对象发送到arraylist,如下所示:

class object {
String foodname;
String quantity;
String amount;
} 

并像这样使用它

VivzAdapter(Context c,ArrayList<object>){

}

希望能帮到你!!!

【讨论】:

  • @user3755062:让你的按钮在第一行工作有什么问题吗?我正在做与您类似的事情,但无法让按钮在我的第一行工作。见这里:stackoverflow.com/questions/25179222/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
相关资源
最近更新 更多