2016-02-13 94 views
2

在我的活動中,我有一個編輯按鈕和它下面的一個列表視圖。我想要的是當我點擊編輯按鈕時,每行的刪除圖標都應該可見。我無法知道如何更新適配器,以便它會在每一行顯示刪除圖標。 這是我的適配器代碼。在列表視圖中顯示一個視圖按鈕點擊活動

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; 

    } 
} 

下面是活動代碼

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

} 

任何幫助,將不勝感激。

回答

3

在你的適配器上取一個布爾值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; 

    } 
} 

現在在您的活動中,您需要在單擊editbutton時調用此方法cartAdapter.setIsDateRequired(true)。然後做cartAdapter.notifyDataSetChanged();

這應該工作。

+0

讓我試試這個 –

+0

感謝您的解決方案。我正在考慮在另一個屏幕上實現它 –

相關問題