2016-02-05 104 views
-2

我有一个listview与这么多按钮。当我点击一个按钮的listview另一个按钮也点击?我怎么能阻止它。当我点击一个按钮的listview另一个按钮也点击我怎么能阻止它

请解决此问题。 给我任何诀窍如何停止在列表视图中的另一个按钮。

这是我的代码

private class MenuItemsAdapter extends ArrayAdapter<MenuItem> { 

    private static final String TAG = "MenuItemsAdapter"; 

    public MenuItemsAdapter(Context context, List<MenuItem> menuItems) { 
     super(context, 0, menuItems); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
    final MenuItem menuItem = getItem(position); 



     View view = convertView; 
     final ViewHolder viewHolder; 
     LayoutInflater inflater; 

      inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      view = inflater.inflate(R.layout.menu_item, parent, false); 
      viewHolder = new ViewHolder(); 
    //  viewHolder.half = (TextView) view.findViewById(R.id.half); 
      viewHolder.name = (TextView) view.findViewById(R.id.name); 
      viewHolder.description = (TextView) view.findViewById(R.id.description); 
      viewHolder.price = (TextView) view.findViewById(R.id.price); 
      viewHolder.add = (Button) view.findViewById(R.id.add); 
      viewHolder.selectedView = view.findViewById(R.id.selectedView); 
      viewHolder.remove = (Button) view.findViewById(R.id.remove); 
      viewHolder.total = (TextView) view.findViewById(R.id.itemTotal); 
      viewHolder.quantity = (TextView) view.findViewById(R.id.quantity); 

      view.setTag(viewHolder); 



     try 
     { 






     viewHolder.name.setText(menuItem.name); 
     viewHolder.description.setText(menuItem.description); 

     viewHolder.price.setText(String.valueOf(menuItem.price)); 



      viewHolder.add.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


       mApplication.createNewCartIfPossibleAndAskIfNot(
         mActivity, mRestaurant, 
         new MainApplication.OnCreateCartListener() { 
          @Override 
          public void onCreateCart(Cart cart) { 


              cart.addOne(menuItem); 

              updateItemFromCart(menuItem, viewHolder); 
              updateCart(); 


          } 


         }); 

      } 
     }); 


     viewHolder.remove.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       if (!mApplication.isCartCreated()) { 
        return; 
       } 
       mApplication.getCart().removeOne(menuItem); 

       updateItemFromCart(menuItem, viewHolder); 
       updateCart(); 
      } 
     }); 

     }catch(NullPointerException e){e.printStackTrace();} 
     return view; 
    } 


    private void updateItemFromCart(MenuItem menuItem, ViewHolder viewHolder) { 


     if (!mApplication.isCartCreated()) { 
      return; 
     } 
     int quantity = mApplication.getCart().getNOfItemsOfType(menuItem); 
     if (quantity > 0) { 

      viewHolder.selectedView.setVisibility(View.VISIBLE); 



     } else { 

      viewHolder.selectedView.setVisibility(View.GONE); 

     } 

     viewHolder.quantity.setText(String.valueOf(quantity)); 

     viewHolder.total.setText(String.valueOf(quantity 
       * menuItem.price)); 

    } 

    class ViewHolder { 
     TextView name; 
     TextView description; 
     TextView price; 
     Button add; 
     View selectedView; 
     Button remove; 
     TextView total; 
     TextView quantity; 
     TextView half; 

    } 

} 
+4

哪里是你的代码 –

+1

被这意味着是一个笑话吗? – pvn

+0

你可能会在按钮的id之间做不匹配,这就是为什么它会发生。请发布您的代码,以便我们解决它。 – user5716019

回答

0

我能想到的你缺少里面适配器静态视图架回收适配器实现。再次,这是基于文本和我过去的经验的假设答案。更详细的调查需要代码研究。


你可以把空检查你的观点

final MenuItem menuItem = getItem(position); 
    View view = convertView; 
    final ViewHolder viewHolder; 

if (convertView == null) { 

    LayoutInflater inflater; 

     inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = inflater.inflate(R.layout.menu_item, parent, false); 
     viewHolder = new ViewHolder(); 
//  viewHolder.half = (TextView) view.findViewById(R.id.half); 
     viewHolder.name = (TextView) view.findViewById(R.id.name); 
     viewHolder.description = (TextView) view.findViewById(R.id.description); 
     viewHolder.price = (TextView) view.findViewById(R.id.price); 
     viewHolder.add = (Button) view.findViewById(R.id.add); 
     viewHolder.selectedView = view.findViewById(R.id.selectedView); 
     viewHolder.remove = (Button) view.findViewById(R.id.remove); 
     viewHolder.total = (TextView) view.findViewById(R.id.itemTotal); 
     viewHolder.quantity = (TextView) view.findViewById(R.id.quantity); 
     view.setTag(viewHolder); 
}else{ 
    viewHolder= (ViewHolder)convertView.getTag(); 
}