मेरे पास आइटम बच्चे के अंदर edittext
है। फिर, मैंने इस edittext
के अंदर एक टेक्स्ट दर्ज किया, लेकिन जब भी मैं अन्य expandablelistview
शीर्षलेख पर क्लिक करता हूं, तो मेरे द्वारा दर्ज किया गया टेक्स्ट गायब हो जाता है।ExpandableListView के अंदर EditText सामग्री अगले ExpandableListView शीर्षलेख पर क्लिक करते समय गायब हो जाती है
मैंने पहले से ही मेरे Manifest.xml और कई अन्य संभावित सुधारों के अंदर android:windowSoftInputMode="adjustPan"
का उपयोग किया है, लेकिन काम नहीं किया है।
यह मेरा एडाप्टर है:
public class ExpendableAdapter extends BaseExpandableListAdapter {
private Context _context;
private List<String> _listDataHeader;
private HashMap<String, List<ExpandItemModel>> _listDataChild;
public ExpendableAdapter(Context context, List<String> listDataHeader,
HashMap<String, List<ExpandItemModel>> listChildData) {
this._context = context;
this._listDataHeader = listDataHeader;
this._listDataChild = listChildData;
}
@Override
public Object getChild(int groupPosition, int childPosititon) {
return this._listDataChild.get(this._listDataHeader.get(groupPosition))
.get(childPosititon);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(final int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final ExpandItemModel childText = (ExpandItemModel) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
}
final EditText etTotal = (EditText)convertView
.findViewById(R.id.et_total);
etTotal.setText(childText.getTotal);
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return this._listDataChild.get(this._listDataHeader.get(groupPosition))
.size();
}
@Override
public Object getGroup(int groupPosition) {
return this._listDataHeader.get(groupPosition);
}
@Override
public int getGroupCount() {
return this._listDataHeader.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
String headerTitle = (String) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_group, null);
}
TextView tvHeader = (TextView) convertView
.findViewById(R.id.tv_header);
tvHeader.setTypeface(null, Typeface.BOLD);
tvHeader.setText(headerTitle);
return convertView;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
और यह लेआउट है:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rl_expen_but"
android:layout_below="@+id/rl_ats_draft2"
android:layout_above="@+id/selanjutnya"
>
<ExpandableListView
android:background="@color/cardview_light_background"
android:id="@+id/lvExp"
android:descendantFocusability="beforeDescendants"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:animateLayoutChanges="true"/>
<View
android:layout_below="@+id/lvExp"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#bebebe"/>
</RelativeLayout>
वहाँ कुछ गड़बड़ मैं ऊपर कोड के साथ किया था है? धन्यवाद।
संपादित करें:
यह कैसे मेरे कोड के रूप में chandil03 ने सुझाव दिया करने के बाद उस संपादित की तरह लग रहा है। जब मैं हेडर का विस्तार करता हूं तो विस्तार योग्यसूचीदृश्य अब रीफ्रेश नहीं होता है। लेकिन आश्चर्यजनक रूप से, जब मैंने ग्रुपपॉजिशन 0 और बाल स्थिति 0 पर एडिटेक्स्ट में मूल्य टाइप किए, तो अलग-अलग गौपोज़िशन और शिशुओं में कुछ अन्य संपादनों में मैंने पिछले संस्करण में टाइप किए गए वही सटीक मान दिखाई दिए। या यहां तक कि अजनबी, पिछले संपादन पर मूल्य कभी-कभी असंतुष्ट हो जाते हैं।
static class ViewHolder {
protected View et;
public void addView(View et){
this.et = et;
}
}
@Override
public View getChildView(final int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final ExpandItemModel childText = (ExpandItemModel) getChild(groupPosition, childPosition);
ViewHolder viewHolder;
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
viewHolder = new ViewHolder();
viewHolder.addView(convertView
.findViewById(R.id.et_total));
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder)convertView.getTag();
}
final EditText etTotal = (EditText)convertView
.findViewById(R.id.et_total);
etTotal.setText(childText.getTotal);
return convertView;
}
मैंने कोशिश की और परिणाम वास्तव में विस्तार योग्य सूचीदृश्य रीफ्रेश नहीं हुआ। लेकिन आश्चर्यजनक रूप से, जब मैंने ग्रुपपॉजिशन 0 और बाल स्थिति 0 पर एडिटेक्स्ट में मूल्य टाइप किए, तो अलग-अलग गौपोज़िशन और शिशुओं में कुछ अन्य संपादनों में मैंने पिछले संस्करण में टाइप किए गए वही सटीक मान दिखाई दिए। या यहां तक कि अजनबी, पिछले संपादन पर मूल्य कभी-कभी असंतुष्ट हो जाते हैं। ऐसा क्यों हुआ? –
सूची दृश्य चक्र/इसे स्मृति को कुशल बनाने के लिए अपने विचारों का उपयोग करता है। इसलिए यदि आप setTag और getTag का उपयोग करके ViewHolder का उपयोग करके विचारों को संभाल नहीं रहे हैं। आपको इस समस्या का सामना करना पड़ेगा। आप एक से अधिक बच्चे में edittext का एक ही संदर्भ सेट कर रहे हैं, यही कारण है कि आपको यह समस्या है। अपने प्रश्न को अपने संशोधित कोड के साथ संपादित करें ताकि मैं देख सकूं। – chandil03
मैंने अपना प्रश्न संपादित कर लिया है। अब मैं पूछना चाहता हूं कि एडाप्टर, ग्रुपव्यू या चाइल्डव्यू में कौन सा दृश्य है, जोल्डर, बसने(), और gettag() का उपयोग करना है? मैंने उन्हें दोनों का उपयोग किया लेकिन कुछ भी नहीं बदला। क्या आप मुझे ऊपर दिए गए कोड में holder.addview के बारे में बता सकते हैं? मुझे नहीं पता कि मैं सही तरीके से इसका उपयोग करता हूं या नहीं। –