使用基本适配器解决方案从自定义列表删除行视图

时间:2015-10-27 11:51:21

标签: android android-activity android-listview

嗨我无法从列表中删除一行查看我不知道如何删除它我从互联网上搜索了很多我尝试了很多例子,但我无法解决问题。当我单击hldr.delete按钮时,列表解决方案中的完整行列表视图将被删除。

PlaceOrder活动

off()

CartAdapter

public class PlaceOrder extends Activity {

    String [] pIds; 
    String [] pNames; 
    String [] pPrizes; 
    static ListView lv;
    ImageView bck;
    String [] listImages;
    String food_id;
    String userdata[];
    Intent i;
    TextView totalprze;
    float tprize;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_place_order);

        lv=(ListView)findViewById(R.id.cart_list);
        bck=(ImageView) findViewById(R.id.placeholder_bg_btn);
        totalprze =(TextView) findViewById(R.id.place_order_price);

        i=new Intent(this,Menu.class);

        bck.setOnClickListener(new OnClickListener() {


            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                 Bundle bundle=new Bundle();

                    //bundle.putStringArray("images", ListImages);
                    bundle.putString("food_id", food_id);
                    bundle.putStringArray("images", listImages);
                    bundle.putStringArray("userData",userdata);
                    i.putExtras(bundle);
                    startActivity(i);
            }
        });


        if(this.getIntent().getExtras()!=null)
        {

         Bundle b=this.getIntent().getExtras();

         pIds=b.getStringArray("pId");
         pNames=b.getStringArray("PName");
         pPrizes=b.getStringArray("pPrize");
         userdata=b.getStringArray("userData");
         tprize=b.getFloat("totalprize");


         food_id=b.getString("food_id");
         listImages=b.getStringArray("images");
         String prz=Float.toString(tprize);
         totalprze.setText("$"+prz);
         lv.setAdapter(new cartAdapter(PlaceOrder.this, pIds, pNames, pPrizes,userdata));

         pIds=null;
         pNames=null;
         pPrizes=null;
       }
    }
        public void onBackPressed() {
         pIds=null;
         pNames=null;
         pPrizes=null;
        }

}

2 个答案:

答案 0 :(得分:0)

你不能从数组中删除任何东西 - 它们总是固定长度。一旦你创建了一个长度为3的数组,那个数组总是有3个长度。如果你想从listview中删除你使用的数组应该是动态的(添加和删除)。因此,将pIdz; pNamz;pPrizs;userData转换为某些模态对象,并准备模态对象列表并将其传递给适配器,让生活更轻松

你最好使用List,例如一个ArrayList:

hldr.delete.setTag(position);
hldr.delete.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            int position = (int)v.getTag();                
            list.remove(position);
            notifyDataSetChanged();

        }
    });

答案 1 :(得分:0)

首先

您应该创建一个存储所有不同字符串的对象,而不是为每个值使用多个数组。

EJ:

class MyClass
{
    String id;
    String name
    String price;

    public MyClass(String id, String name, String price)
    {
        this.id = id;
        this.name = name;
        this.price = price;
    }
}

这样你就不必删除每个数组的位置。

最后回答你的问题,只需删除每个数组要删除的位置值。

由于它们是Array而不是ArrayList,因此您需要使用正确的新维度重新创建它(注意使用ArrayList会更容易)。

然后在Adapter类上调用notifyDataSetChanged()。

希望这有帮助。