2014-09-03 113 views
0

在我的應用程序中有一個編輯文本,下面是一個帶有複選框的列表。當用戶選擇一個特定的複選框時,該值將顯示在edittext.Now中,如果用戶將一些值寫入所述的EditText,然後選擇對應的複選框,則哪個用戶已鍵入由選定value.I重寫要被顯示在的EditText兩個值的值Editext不接受用戶輸入的值

代碼

public class EmailListAdapter extends BaseAdapter { 
    private Context context; 
    private ArrayList<EmailModel> data; 
    DbHandler dbHandler; 
    int[] emails; 
    static ArrayList<String> emailSeperated; 
    private String strEmails, strTemp; 

    public EmailListAdapter(Context context, ArrayList<EmailModel> data) { 
     this.context = context; 
     this.data = data; 
     emails = new int[data.size()]; 
     emailSeperated = new ArrayList<String>(); 

    } 

    @Override 

    public int getCount() { 
     return data.size(); 
    } 

    @Override 
    public Object getItem(int i) { 
     return null; 
    } 

    @Override 
    public long getItemId(int i) { 
     return 0; 
    } 

    @Override 
    public View getView(final int i, View view, ViewGroup viewGroup) { 

     final ViewHolder holder; 
     dbHandler = new DbHandler(context); 


     if (view == null) { 
      holder = new ViewHolder(); 
      view = LayoutInflater.from(context).inflate(R.layout.email_custom_list, viewGroup, false); 
      holder.tvContact = (TextView) view.findViewById(R.id.tv_email_name); 
      holder.checkBox = (CheckBox) view.findViewById(R.id.cb_email_checkbox); 

      view.setTag(holder); 
     } else { 
      holder = (ViewHolder) view.getTag(); 
     } 
//  if (emails[i] == 0) { 
//   holder.checkBox.setChecked(false); 
//  } else { 
//   holder.checkBox.setChecked(true); 
//  } 


     holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
                 @Override 
                 public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 

                  if (compoundButton == holder.checkBox) { 
                   if (b) { 
                    emails[i] = 1; 
                    //dbHandler.updateContactList(data.get(i).getUserID(), 1); 


// 

                   } else { 

                    emails[i] = 0; 
                   } 
                  } 

                 } 
                } 

     ); 

     holder.checkBox.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 


       if (emails[i] == 1) { 

        emailSeperated.add(data.get(i).getEmail()); 
        Log.e("Email values", emailSeperated.toString()); 
        Log.e("Position", "" + i); 


       } else if (emails[i] == 0) { 

        emailSeperated.remove(data.get(i).getEmail()); 
        Log.e("Email values", emailSeperated.toString()); 
        Log.e("Position", "" + i); 
       } 
       if (!TextUtils.isEmpty(ShareWithinpocketDocs.etEmailLists.getText().toString())) { 

        ShareWithinpocketDocs.etEmailLists.setText(ShareWithinpocketDocs.etEmailLists.getText().toString() + "," + emailSeperated.toString().subSequence(1, emailSeperated.toString().length() - 1)); 

       } else { 
        strTemp = emailSeperated.toString().substring(1, emailSeperated.toString().length() - 1); 
        Log.e("Email Seperated values", strTemp); 
        ShareWithinpocketDocs.etEmailLists.setText(strTemp); 
       } 
      } 
     }); 


     if (emails[i] == 0) { 
      holder.checkBox.setChecked(false); 
//   emailSeperated.remove(data.get(i).getEmail()); 
//   Log.e("Email values", emailSeperated.toString()); 

//   ShareWithinpocketDocs.etEmailLists.setText(emailSeperated.toString()); 
     } else { 
      holder.checkBox.setChecked(true); 
//   emailSeperated.add(data.get(i).getEmail()); 
//   Log.e("Email values", emailSeperated.toString()); 

     } 


     holder.tvContact.setText(data.get(i).getEmail()); 


     return view; 
    } 


    private class ViewHolder { 
     TextView tvContact; 
     CheckBox checkBox; 

    } 
} 
+0

是'etEmailLists'是靜態的? – 2014-09-03 14:06:02

+0

是的,它是靜態的 – user3917131 2014-09-03 14:59:08

+0

然後,你必須測試你的情況,並告訴我你得到了什麼,試着在setText行之前打印'ShareWithinpocketDocs.etEmailLists.getText()。toString()',告訴我什麼是結果 – 2014-09-04 08:29:44

回答

0

這將顯示什麼是目前位於EditText中,新文本用逗號分隔。更改

holder.tvContact.setText(data.get(i).getEmail()); 

String s = holder.tvContact.gettext().toString(); 
holder.setText(s + ", " + data.get(i).getEmail()); 
+0

他說的是「EditText」而不是「TextView」 – 2014-09-04 08:18:29