2017-05-29 16 views
-1

私は、チェックボックスと2つのtextViewでListViewを持ち、従業員の名前と従業員のID番号を表示します。問題は、smsMobilenumberを持つ位置だけをチェックしたいのです。mobilenumberがその位置に存在していないかどうかを調べるべきではありません。私を助けてください。ここでlistViewから特定のポジションを選択

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

私はエラーを取得していません。私はちょうどその携帯番号フィールドがnullではない名前だけをチェックしたいです。 –

答えて

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

チェックボックスを非表示にして、データが存在する場合は表示してください。私の答えが更新されました。 –

関連する問題