2016-11-24 3 views
1

Ich habe save Edittext Wert in Bean child.setCompliance_newComments(finalHolder2.newComplianceComment.getText().toString()), wenn ich Scrolling der erweiterbare listview alle Wert entfernt werden. Wie spart man Wert und Position?
Kann jemand vorschlagen, wie edittext Wert zu speichern?EditText verliert Wert beim Scrollen in Expandable ListView

public ComplianceListAdapter(Context context, ArrayList<ComplianceGroupData> datas){ 
    this.context=context; 
    this.groupDatas=datas; 


} 
@Override 
public int getGroupCount() { 
    return this.groupDatas.size(); 
} 

@Override 
public int getChildrenCount(int groupPosition) { 
    ArrayList<ComplianceChildData> ch=groupDatas.get(groupPosition).getChild(); 
    return ch.size(); 
} 

@Override 
public Object getGroup(int groupPosition) { 
    return groupDatas.get(groupPosition); 
} 

@Override 
public Object getChild(int groupPosition, int childPosition) { 
    ArrayList<ComplianceChildData> datas=groupDatas.get(groupPosition).getChild(); 
    return datas.get(childPosition); 
} 

@Override 
public long getGroupId(int groupPosition) { 
    return groupPosition; 
} 

@Override 
public long getChildId(int groupPosition, int childPosition) { 
    return childPosition; 
} 

@Override 
public boolean hasStableIds() { 
    return false; 
} 


@Override 
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 
    ComplianceGroupData group = (ComplianceGroupData) getGroup(groupPosition); 
    GroupViewHolder holder1 = null; 
    View view=convertView; 
    if (convertView == null){ 
     LayoutInflater layoutInflater=(LayoutInflater)this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view=layoutInflater.inflate(R.layout.compliance_group_row,null); 
     holder1 =new GroupViewHolder(); 
     holder1.group=(TextView)view.findViewById(R.id.tv_header); 
     view.setTag(holder1); 
    } 
    else { 
     holder1 = (GroupViewHolder) view.getTag(); 
    } 
    holder1.group.setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS); 
    holder1.group.setText(group.getGroupName()); 

    return view; 
} 

@Override 
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { 
    final ComplianceChildData child = (ComplianceChildData)getChild(groupPosition, childPosition); 
    ArrayList<ComplianceChildData> datas=groupDatas.get(groupPosition).getChild(); 
    ChildViewHolder holder = null; 
    View view1 = convertView; 
    if (convertView==null){ 
     LayoutInflater inflater=(LayoutInflater)this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view1=inflater.inflate(R.layout.compliance_child_row_layout,null); 
     holder = new ChildViewHolder(); 
     holder.compliance = (TextView) view1.findViewById(R.id.tv_compliance_list); 
     holder.chk_compliance=(RadioGroup)view1.findViewById(R.id.rg_chk_compliance); 
     holder.complianceYes=(RadioButton)view1.findViewById(R.id.rb_compliance_yes); 
     holder.complianceNo=(RadioButton)view1.findViewById(R.id.rb__compliance_no); 
     holder.complianceNotApplicable=(RadioButton)view1.findViewById(R.id.rb_compliance_not_applicable); 
     holder.oldComplianceComment=(EditText)view1.findViewById(R.id.et_old_compliance_comment); 
     holder.newComplianceComment=(EditText)view1.findViewById(R.id.et_new_compliance_comment); 
     view1.setTag(holder); 
    } 
    else { 
     holder = (ChildViewHolder) view1.getTag(); 
    } 

    holder.compliance.setText(child.getCompliance_name()); 
    holder.oldComplianceComment.setText(child.getCompliance_comment()); 
    holder.chk_compliance.setOnCheckedChangeListener(null); 
    holder.chk_compliance.clearCheck(); 

    switch (child.getCompliance_check()) { 
     case "Yes": 
      holder.complianceYes.setChecked(true); 
      holder.oldComplianceComment.setVisibility(View.VISIBLE); 
      holder.newComplianceComment.setVisibility(View.VISIBLE); 

      break; 
     case "No": 
      holder.complianceNo.setChecked(true); 
      holder.oldComplianceComment.setVisibility(View.VISIBLE); 
      holder.newComplianceComment.setVisibility(View.VISIBLE); 

      break; 
     case "Not Applicable": 
      holder.complianceNotApplicable.setChecked(true); 
      holder.oldComplianceComment.setVisibility(View.VISIBLE); 
      holder.newComplianceComment.setVisibility(View.VISIBLE); 

      break; 
     default: 
      // holder.chk_compliance.clearCheck(); 
      holder.oldComplianceComment.setVisibility(View.GONE); 
      holder.newComplianceComment.setVisibility(View.GONE); 

      break; 
    } 
    final ChildViewHolder finalHolder = holder; 
    holder.chk_compliance.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      int childCount = group.getChildCount(); 
      for (int x = 0; x < childCount; x++) { 
       RadioButton btn = (RadioButton) group.getChildAt(x); 

       if (btn.getId() == checkedId) { 
        child.setCompliance_check(btn.getText().toString()); 
        finalHolder.oldComplianceComment.setVisibility(View.VISIBLE); 
        finalHolder.newComplianceComment.setVisibility(View.VISIBLE); 
        System.out.println("Adapter----->"+child.getCompliance_check()); 

       } 

      } 

     } 
    }); 
    final ChildViewHolder finalHolder2 = holder; 
    holder.newComplianceComment.addTextChangedListener(new TextWatcher() { 

     public void afterTextChanged(Editable s) { 
      child.setCompliance_newComments(finalHolder2.newComplianceComment.getText().toString()); 
      System.out.println("setcomment----->" + finalHolder2.newComplianceComment.getText().toString()); 
      System.out.println("getcomment----->" + child.getCompliance_newComments()); 


     } 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     } 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 


     } 
    }); 

    return view1; 
} 
@Override 
public boolean isChildSelectable(int groupPosition, int childPosition) { 
    return true; 
} 
private class ChildViewHolder { 
    TextView compliance; 
    RadioGroup chk_compliance; 
    EditText oldComplianceComment,newComplianceComment; 
    RadioButton complianceNo,complianceYes,complianceNotApplicable; 

} 
private class GroupViewHolder { 
    TextView group; 
} 

}

+0

Setzen Sie das Tag auf die Textansicht und rufen Sie das Tag beim Scrollen erneut ab. –

+0

Können Sie bitte kurz erklären. Wo ich setTag und getTag setzen, um den Wert zu erhalten? – Babu

+0

'final ChildViewHolder finalHolder = holder;' und 'final ChildViewHolder finalHolder = holder;'. Sie sollten diese loswerden, da sie nutzlos sind. Sie zeigen immer auf den Punkt, für den 'getGroupView' zuletzt aufgerufen wurde. – greenapps

Antwort

1

entfernen
if (convertView==null) { } else { } beiden Gruppen und Kind. Es wird in Ihrem Szenario funktionieren.

0

können Sie gemeinsame Vorliebe verwenden Sie den Wert Ihrer EditText zu speichern und zu füllen, wann immer und notwendig ...

+0

Dieser Wert stammt von dynamically.so können wir keine gemeinsame Präferenz beibehalten. – Babu

+0

dann füllen Sie es jedes Mal, wenn die Ansicht erweitert wird ... – raasesh

0

Try-Tag zu jeder Ansicht einzustellen.

für zB

holder.compliance.setTag(Integer.parseInt(groupPosition+""childPosition)); 

oder Sie können eine beliebige eindeutige Nummer in setTag geben den Tag zu erkennen, in diesem Fall habe ich die Kombination von Gruppenposition und Kind verwendet.

dann abrufen Tag

holder.compliance.getTag(); 
+0

Funktioniert nicht..wenn ich in der erweiterbaren Listenansicht blättern der eingegebene Text bearbeiten Wert fehlt.Zum Speichern/Abrufen von Wert und Position? – Babu

+0

Siehe oben "addTextChangedListener" .Eingeben jedes char wird in child.setCompliance_newComments gespeichert (holder.newComplianceComment.getText(). ToString()). Dann blättern erweiterbare Listenansicht der Wert wird automatisch entfernt.wie Wert an der gleichen Kindposition zu speichern? – Babu

Verwandte Themen