2014-09-03 89 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