2013-07-19 27 views
0

我有一個要求,當我輸入郵政編碼並按下模擬器/平板電腦上的回車鍵時,我得到ListView中的操作員名稱列表。在ListView內部我正在使用checkedtextview來填充使用我的自定義數組適配器的數據。默認情況下應檢查列表視圖中的第一個數據

應該在一次只檢查一個操作員名稱時檢查listview。無論何時將數據填充到列表視圖中,默認情況下都應檢查第一個操作員名稱。

有什麼方法可以找出解決方案。

我使用自定義陣列適配器這樣

private class OperatorListAdapter extends ArrayAdapter<String> { 

    private HashMap<Integer, Boolean> selectOperatorStatusMap = new HashMap<Integer, Boolean>(); 

    public OperatorListAdapter(Context context, int resource, List<String> objects) { 
     super(context, resource, objects); 

     selectOperatorStatusMap.put(0, true); 
     for (int i = 1; i < objects.size(); i++) { 
     selectOperatorStatusMap.put(i, false); 
     } 
    } 

    public void toggleChecked(int position) { 
     if (selectOperatorStatusMap.get(position)) { 
      selectOperatorStatusMap.put(position, false); 
     } else { 
      selectOperatorStatusMap.put(position, true); 
     } 

     notifyDataSetChanged(); 
    } 

    public void unChecked(int position) { 
     for (int i = 0; i < selectOperatorStatusMap.size(); i++) { 
      if(i!=position){ 
       checkedTextView.setChecked(false); 
       checkedTextView.setCheckMarkDrawable(R.drawable.uncheck); 
      } 
     } 
    } 

    public List<Integer> getCheckedItemPositions() { 
     List<Integer> checkedItemPositions = new ArrayList<Integer>(); 

     for (int i = 0; i < selectOperatorStatusMap.size(); i++) { 
      if (selectOperatorStatusMap.get(i)) { 
       (checkedItemPositions).add(i); 
      } 
     } 

     return checkedItemPositions; 
    } 

    public List<String> getCheckedItems() { 
     List<String> checkedItems = new ArrayList<String>(); 

     for (int i = 0; i < selectOperatorStatusMap.size(); i++) { 
      if (selectOperatorStatusMap.get(i)) { 
       (checkedItems).add(operatorList.get(i)); 
      } 
     } 

     return checkedItems; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row = convertView; 

     if (row == null) { 
      LayoutInflater inflater = getActivity().getLayoutInflater(); 
      row = inflater.inflate(R.layout.provider_list, parent, false); 
     } 

     checkedTextView = (CheckedTextView) row.findViewById(R.id.list_text); 
     checkedTextView.setText(operatorList.get(0)); 
     Log.i(TAG, "OperatorListAdapter:"+operatorList.get(0)); 
     Boolean checked = selectOperatorStatusMap.get(position); 

     if (checked != null) { 
      checkedTextView.setChecked(true); 
     } 

     return row; 
    } 
} 

回答

0

是。在getView代替

if (checked != null) { 
    checkedTextView.setChecked(true); 
} 

用途:

if (position == 0) { 
    checkedTextView.setChecked(true); 
} 
else{ 
    checkedTextView.setChecked(false) 
} 
+0

在checkedtextview我使用支票選擇和uncheck.so這種選擇不工作 – user2587727

相關問題