android - 在 Activity 中单击按钮时使 View 在 ListView 行中可见

标签 android listview android-arrayadapter

在我的 Activity 中,我有一个编辑按钮和它下面的 ListView 。我想要的是,当我单击编辑按钮时,每行的删除图标应该变得可见。我对如何更新适配器以使其在每一行中显示删除图标一无所知。 这是我的适配器代码。

    public class CartAdapter extends ArrayAdapter<CartBean> {
    private final ArrayList<CartBean> cartBeans;
    DecimalFormat df = new DecimalFormat("#.##");
    public CartAdapter(Context context, ArrayList<CartBean> beans) {
        super(context, 0, beans);
        this.cartBeans = beans;
    }



    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
       // final CartBean beans = getItem(position);

        View view = convertView;
        final ViewHolder viewHolder;

        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) getContext()
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            view = inflater.inflate(R.layout.list_cart_row, parent, false);

            viewHolder = new ViewHolder();

            viewHolder.row_price = (TextView) view.findViewById(R.id.row_price);
            viewHolder.row_quantity = (TextView) view.findViewById(R.id.cart_quantity);
            viewHolder.row_item_name = (TextView) view.findViewById(R.id.row_item_name);
            //  viewHolder.rastaurantoffer = (ImageView) view.findViewById(R.id.rastaurantname2);


            view.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        viewHolder.row_price.setText(String.valueOf(df.format(Double.parseDouble(cartBeans.get(position).getTotal_price()) * cartBeans.get(position).getQuantity())));
        viewHolder.row_quantity.setText(String.valueOf(cartBeans.get(position).getQuantity()));
        viewHolder.row_item_name.setText(cartBeans.get(position).getItem_name());
        //viewHolder.tv_quantity.setText("0");
        // viewHolder.total_price.setText(restaurant.getRestaurantTimeStatus1());


        return view;
    }

    class ViewHolder {

        TextView row_quantity,row_item_name;
        TextView row_price;

    }
}

这是 Activity 代码

public class ActivityCart extends AppCompatActivity {
    ListView lv_cart;
    LinearLayout lin_cart;
    TextView tv_sub_total;
    double total=0.0;
    Button btn_delivery,btn_edit;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_cart_details);
        lv_cart= (ListView) findViewById(R.id.lv_cart);
        lin_cart= (LinearLayout) findViewById(R.id.lin_cart);
        lin_cart.setVisibility(View.GONE);
        tv_sub_total= (TextView) findViewById(R.id.tv_sub_total);
        btn_delivery= (Button) findViewById(R.id.btn_delivery);
        btn_edit= (Button) findViewById(R.id.btn_edit);
        DecimalFormat df = new DecimalFormat("#.##");
        CartAdapter cartAdapter=new CartAdapter(ActivityCart.this, AppConstants.cartBeanArrayList);
        lv_cart.setAdapter(cartAdapter);
        //setListViewHeightBasedOnChildren(lv_cart);
        for (int i=0;i<AppConstants.cartBeanArrayList.size();i++)
        {
            String price=AppConstants.cartBeanArrayList.get(i).getTotal_price().substring(3, AppConstants.cartBeanArrayList.get(i).getTotal_price().length());
            total=total + (Double.parseDouble(AppConstants.cartBeanArrayList.get(i).getTotal_price())*AppConstants.cartBeanArrayList.get(i).getQuantity());
        }
        double totPrice=0.0;
       // totPrice=df.format(total);
        tv_sub_total.setText("Rs. "+df.format(total));
        btn_delivery.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent in=new Intent(ActivityCart.this,ActivityLogin.class);
                startActivity(in);
            }
        });
    }

}

如有任何帮助,我们将不胜感激。

最佳答案

在您的适配器中采用 bool 值 isDeleteRequired 并为其创建一个 setter 。

public class CartAdapter extends ArrayAdapter<CartBean> {
    private final ArrayList<CartBean> cartBeans;
    private boolean isDeleteRequired;
    DecimalFormat df = new DecimalFormat("#.##");
    public CartAdapter(Context context, ArrayList<CartBean> beans) {
        super(context, 0, beans);
        this.cartBeans = beans;
    }



    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
       // final CartBean beans = getItem(position);

        View view = convertView;
        final ViewHolder viewHolder;

        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) getContext()
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            view = inflater.inflate(R.layout.list_cart_row, parent, false);

            viewHolder = new ViewHolder();

            viewHolder.row_price = (TextView) view.findViewById(R.id.row_price);
            viewHolder.row_quantity = (TextView) view.findViewById(R.id.cart_quantity);
            viewHolder.row_item_name = (TextView) view.findViewById(R.id.row_item_name);
            //  viewHolder.rastaurantoffer = (ImageView) view.findViewById(R.id.rastaurantname2);


            view.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        viewHolder.row_price.setText(String.valueOf(df.format(Double.parseDouble(cartBeans.get(position).getTotal_price()) * cartBeans.get(position).getQuantity())));
        viewHolder.row_quantity.setText(String.valueOf(cartBeans.get(position).getQuantity()));
        viewHolder.row_item_name.setText(cartBeans.get(position).getItem_name());
        //viewHolder.tv_quantity.setText("0");
        // viewHolder.total_price.setText(restaurant.getRestaurantTimeStatus1());
if(isDeleteRequired){
 viewHolder.deleteButton.setVisibility(View.VISIBLE);
}else{
  viewHolder.deleteButton.setVisibility(View.GONE);
}

        return view;
    }
   public boolean setIsDateRequired(boolean isdaterequired){
         isDateRequired = isdaterequired;
   }
    class ViewHolder {

        TextView row_quantity,row_item_name;
        TextView row_price;
        Button deleteButton;

    }
}

现在,在您的 Activity 中,单击编辑按钮时,您需要调用此方法cartAdapter.setIsDateRequired(true)。然后执行cartAdapter.notifyDataSetChanged();

这应该有效。

关于android - 在 Activity 中单击按钮时使 View 在 ListView 行中可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35376483/

相关文章:

wpf - 如何同步ListCollectionView.CurrentItem和ListView.SelectedItem?

java - 我需要使用 ArrayAdapter 在 GridView 中显示 ArrayList<String>

android - 如何使用自定义 View 中的按钮从 ListView 中删除自定义 View

android - 如何在我的 Android 应用程序中录制视频?

java - 设置图像资源

android - 这是一个 ListView ,以及如何做到这一点

java - 如何获取 onActivityResult 中的上下文?

java - 在第二个 Intent 中刷新数组列表

java - valueOf 函数有问题

android - 在 SD 卡上安装自签名 apk 时出现 "Application not installed"