【问题标题】:OnClicking Delete an Item from the ListView in AndroidOnClicking 从 Android 的 ListView 中删除一个项目
【发布时间】:2012-05-18 06:24:01
【问题描述】:

我正在尝试实现删除功能以从列表视图中删除项目。单击文本“删除项目”项目应从 ListView 中删除。 我已经尝试过了,但是我在代码中遇到了错误。 我不知道如何纠正错误。

这是我的代码:

   public View getView(final int position, View convertView, ViewGroup parent) 
    {


      final  ViewHolder holder;

        if (convertView == null) 
        {
            convertView = inflater.inflate(R.layout.selecteditemlistview, null);
            holder = new ViewHolder();

            holder.textViewSelectedText = (TextView)convertView.findViewById(R.id.selectedtext);
            holder.price=(TextView)convertView.findViewById(R.id.selectitemprice);
            holder.image=(ImageView)convertView.findViewById(R.id.selectitemimage);
            holder.qty=(EditText)convertView.findViewById(R.id.selectqty);
            holder.total=(TextView)convertView.findViewById(R.id.price);

            holder.deleteButton = (TextView) convertView.findViewById(R.id.delete);


            convertView.setTag(holder);
        }
        else 
        {
            holder = (ViewHolder) convertView.getTag();
        }
        String amount=holder.qty.getText().toString();
        final Double price1=Double.parseDouble(itemprice.get(position));
        int qut=Integer.parseInt(holder.qty.getText().toString());
        Double total=(price1*qut);
        holder.textViewSelectedText.setText(arr1.get(position));
        holder.price.setText(itemprice.get(position));
        holder.image.setImageBitmap(itemimage.get(position));
        holder.total.setText(String.valueOf(total));

        final CartItem mCartItem = (CartItem) getItem(position);


        holder.mTextView.setText(mCartItem.product_name);
        holder.deleteButton.setOnClickListener(new OnClickListener() {


            public void onClick(View v) {
                Object cartItems;
                CustomAdapter myAdapter = new CustomAdapter(CustomAdapter.this, R.layout.selecteditemlistview, cartItems);
                ListView listview = (ListView) findViewById(R.id.delete);
                listview.setAdapter(myAdapter);
                        cartItems.remove(object);
                        myAdapter.notifyDatasetChanged();


            }

        });

        return convertView;     
    }

    class ViewHolder      
    {
         public TextView deleteButton;
         public TextView mTextView;

        TextView textViewSelectedText = null;
        TextView price=null;
        ImageView image=null;      
        EditText qty=null;
        TextView total=null;
    }  
    public class CartItem {
        public int id;
        public String product_name;
    }

确切的错误在下面的代码中:

     holder.deleteButton.setOnClickListener(new OnClickListener() {


            public void onClick(View v) {
                Object cartItems;
                CustomAdapter myAdapter = new CustomAdapter(CustomAdapter.this, R.layout.selecteditemlistview, cartItems);
                ListView listview = (ListView) findViewById(R.id.delete);
                listview.setAdapter(myAdapter);

                Object toRemove = arrayAdapter.getItem([POSITION]);
                arrayAdapter.remove(toRemove);

            }

        });

请帮我解决这个问题。谢谢。。

这是我的 Logcat 错误:

       05-18 12:38:04.630: I/System.out(514): Printing
       05-18 12:38:04.711: I/System.out(514): [152.00]
       05-18 12:38:04.711: I/System.out(514): arr: 1
       05-18 12:38:04.721: I/System.out(514): 152.0
       05-18 12:38:04.781: D/AndroidRuntime(514): Shutting down VM
       05-18 12:38:04.781: W/dalvikvm(514): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
       05-18 12:38:04.811: E/AndroidRuntime(514): FATAL EXCEPTION: main
       05-18 12:38:04.811: E/AndroidRuntime(514): java.lang.ClassCastException: java.lang.String
       05-18 12:38:04.811: E/AndroidRuntime(514):   at com.customer.CustomAdapter.getView(CustomAdapter.java:106)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.widget.AbsListView.obtainView(AbsListView.java:1315)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at  android.widget.ListView.makeAndAddView(ListView.java:1727)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.widget.ListView.fillDown(ListView.java:652)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.widget.ListView.fillFromTop(ListView.java:709)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.widget.ListView.layoutChildren(ListView.java:1580)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.widget.AbsListView.onLayout(AbsListView.java:1147)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.view.View.layout(View.java:7035)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.widget.RelativeLayout.onLayout(RelativeLayout.java:909)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.view.View.layout(View.java:7035)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.view.View.layout(View.java:7035)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.view.View.layout(View.java:7035)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.view.View.layout(View.java:7035)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.view.ViewRoot.performTraversals(ViewRoot.java:1045)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.os.Handler.dispatchMessage(Handler.java:99)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.os.Looper.loop(Looper.java:123)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at android.app.ActivityThread.main(ActivityThread.java:4627)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at java.lang.reflect.Method.invokeNative(Native Method)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at java.lang.reflect.Method.invoke(Method.java:521)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
       05-18 12:38:04.811: E/AndroidRuntime(514):   at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 您遇到的错误是什么?发布您的 logcat 错误消息
  • 我努力运行我的应用程序。在代码中我遇到了错误。
  • 错误如下: 此行有多个标记 - cartItems 无法解析为变量 - MyAdapter 无法解析为类型 - MyAdapter 无法解析为类型 - 构造函数 CustomAdapter(CustomAdapter, int , 对象) 未定义
  • 好的。您是否使用 ArrayList 来填充您的列表。 itemprice 和 arr1 的值是多少。你能发布你的整个适配器类吗?

标签: android list listview


【解决方案1】:

您只需删除要从中填充适配器的数据集项,然后使用notifyDataSetChanged() 通知适配器

        holder.deleteButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                 yourdataset.remove(position);
                 notifyDataSetChanged();
            }
        });

【讨论】:

  • 因为我是 Stack Overflow 的新手,你能告诉我如何发布错误吗??
  • 这是错误:在 com.customer.CustomAdapter.getView(CustomAdapter.java:106)
  • 那一行是:final CartItem mCartItem = (CartItem) getItem(position);
  • @Stuthi,因为您是 StackOverflow 的新手,如果您对答案感到满意,您应该勾选它,以便其他用户不会再次回答这个问题,认为这是一个未回答的问题。
猜你喜欢
  • 2011-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-22
相关资源
最近更新 更多