2012-04-18 61 views
1

我在自定義列表視圖無法包含在一個列表視圖複選框

this is my apps screen shot

在這裏工作,當點擊選擇整個項目是我的適配器類

public class MenubaseAdapter extends BaseAdapter { 
private static ArrayList<MenuItem> searchMenuItemArraylist; 
private LayoutInflater menuInflater; 
public MenubaseAdapter(Context context,ArrayList<MenuItem> results) { 
    searchMenuItemArraylist=results; 
    menuInflater = LayoutInflater.from(context); 
} 

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return searchMenuItemArraylist.size(); 
} 

@Override 
public Object getItem(int position) { 
    // TODO Auto-generated method stub 
    return position; 
} 

@Override 
public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return position; 
} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 

       iewHolder holder; 
      if(convertView==null) 
      { 
       convertView=menuInflater.inflate(R.layout.menu_list, null); 
       holder=new MenuViewHolder(); 

       holder.txtItemName=(TextView)convertView.findViewById(R.id.textView_menuitem); 
       holder.txtItemPrice=(TextView)convertView.findViewById(R.id.textView_itemprice); 
       holder.txtItemQty=(TextView)convertView.findViewById(R.id.TextView_itemQty); 
       holder.selectChk=(CheckBox)convertView.findViewById(R.id.checkBox_menuchk); 



       convertView.setTag(holder); 
      }else { 
       holder=(MenuViewHolder)convertView.getTag(); 
      } 
      holder.txtItemName.setText(searchMenuItemArraylist.get(position).getMenuItemname()); 
      holder.txtItemPrice.setText(searchMenuItemArraylist.get(position).getMenuItemPrice()); 
      holder.txtItemQty.setText(searchMenuItemArraylist.get(position).getItemQty()); 
      holder.selectChk.setChecked(searchMenuItemArraylist.get(position).isSelected()); 
holder.selectChk.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View v) { 
         // TODO Auto-generated method stub 

         //how to select the listview item ? 
        } 
       }); 

return convertView; 

     } 

static class MenuViewHolder 
{ 
    TextView txtItemName; 
    TextView txtItemPrice; 
    TextView txtItemQty; 
    CheckBox selectChk; 
} 

}

現在我的問題是,當我點擊獲得選擇的列表中foodmenuitems和複選框得到checked.but如果我只是點擊複選框,然後在列表項不會提前選擇.thnx。

回答

4

爲了保證所選項目的跟蹤,把你的對象或字符串將在其中添加或刪除所選項目的簡單的ArrayList的一個臨時數組列表。

例如

你有一個臨時的ArrayList

現在getview方法,你將不得不做兩個變化

  1. 檢查天氣當前對象是在臨時數組列表或不。如果當前元素位於臨時數組列表中,那麼只需將複選框的狀態設置爲true,否則將其設置爲false。
  2. 在複選框的方法的onClick首先檢查複選框的狀態。如果複選框被選中,那麼只需檢查天氣當前元素是否在temp arraylist中,如果不是,那麼只需在arraylist中添加當前元素。如果複選框的狀態未被選中,那麼檢查當前元素的temp arraylist,如果temp列表中存在,然後將其從列表中刪除,然後調用notifyDatasetChanged方法
+0

我用這個東西http:// www.marvinlabs.com/2010/10/custom-listview-ability-check-items/如果有人從這個鏈接幫助,請給予好評我的查詢。 – kaushikSuman 2012-04-19 09:41:26