2017-05-29 50 views
-1

我有一個ListView與一個複選框和2個textView,我想在其中顯示員工姓名和員工ID號。問題是我想只檢查具有smsMobilenumber的位置,並且不應該檢查移動編號是否不存在於該位置。請幫助我。從列表中選擇特定的位置查看

public SmsEmployeeNameListAdapter(Context context, BaseActivity activity, ArrayList<CheckModelClass> employeeName, ArrayList<CheckModelClass> employeeNumber, 
             ArrayList<CheckModelClass> smsMobileNum, ArrayList<CheckModelClass> employeeId, ArrayList<String> updatedSmsNumber, ArrayList<String> updatedUserId) { 
    super(context, R.layout.sms_employeelist,employeeName); 
    this.context = context; 
    this.activity = activity; 
    this.employeeName = employeeName; 
    this.employeeNumber = employeeNumber; 
    this.smsMobileNum = smsMobileNum; 
    this.employeeId = employeeId; 
    this.updatedSmsNumber = updatedSmsNumber; 
    this.updatedUserId = updatedUserId; 

} 
private static class ViewHolder { 

    CheckBox checkBox; 
    TextView EmployeeName, EmployeeNumber; 
} 
@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    ViewHolder viewHolder = null; 
    if(convertView == null){ 
     inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.sms_employeelist, parent, false); 
     viewHolder = new ViewHolder(); 
     viewHolder.EmployeeName = (TextView)convertView.findViewById(R.id.text1); 
     viewHolder.EmployeeNumber = (TextView)convertView.findViewById(R.id.text2); 
     viewHolder.checkBox = (CheckBox)convertView.findViewById(R.id.checkbox); 
     viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       int getPosition = (Integer) buttonView.getTag(); 
       if(!smsMobileNum.get(getPosition).getName().isEmpty()){ 
        employeeName.get(getPosition).setSelected(buttonView.isChecked()); 
        if(isChecked){ 
         updatedSmsNumber.add(smsMobileNum.get(getPosition).getName()); 
         updatedUserId.add(employeeId.get(getPosition).getName()); 
        }else{ 
         updatedSmsNumber.remove(smsMobileNum.get(getPosition).getName()); 
         updatedUserId.remove(employeeId.get(getPosition).getName()); 
        } 

       } 

      } 
     }); 
     convertView.setTag(viewHolder); 
     convertView.setTag(R.id.text1, viewHolder.EmployeeName); 
     convertView.setTag(R.id.text2, viewHolder.EmployeeNumber); 
     convertView.setTag(R.id.checkbox, viewHolder.checkBox); 

    }else{ 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 
    viewHolder.checkBox.setTag(position); 
    viewHolder.EmployeeName.setText(employeeName.get(position).getName()); 
    viewHolder.EmployeeNumber.setText(employeeNumber.get(position).getName()); 
    viewHolder.checkBox.setChecked(employeeName.get(position).isSelected()); 

    return convertView; 
} 
+0

究竟什麼是你的錯誤? – moritzg

+0

我沒有收到錯誤。我只想檢查那些手機號碼字段不爲空的名字。 –

回答

0
Class User 
{ 
boolean hasNumber=flase; 

} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    ViewHolder viewHolder = null; 
    if(convertView == null){ 
     inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.sms_employeelist, parent, false); 
     viewHolder = new ViewHolder(); 
     viewHolder.EmployeeName = (TextView)convertView.findViewById(R.id.text1); 
     viewHolder.EmployeeNumber = (TextView)convertView.findViewById(R.id.text2); 
     viewHolder.checkBox = (CheckBox)convertView.findViewById(R.id.checkbox); 

這裏檢查

if(userObj.get(getPosition).gethasNumber())) 
{ 
       viewHolder.checkBox.setVisibility(View.VISIBLE); 
      viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        int getPosition = (Integer) buttonView.getTag(); 
        if(!smsMobileNum.get(getPosition).getName().isEmpty()){ 
         employeeName.get(getPosition).setSelected(buttonView.isChecked()); 
         if(isChecked){ 
          updatedSmsNumber.add(smsMobileNum.get(getPosition).getName()); 
          updatedUserId.add(employeeId.get(getPosition).getName()); 
         }else{ 
          updatedSmsNumber.remove(smsMobileNum.get(getPosition).getName()); 
          updatedUserId.remove(employeeId.get(getPosition).getName()); 
         } 

        } 

       } 
      }); 
} 
+0

它仍然選擇它。 –

+0

然後隱藏複選框..並顯示它,如果數據存在更新我的回答看看它。 –