expandablelistview
ürün çocuğunun içinde bir edittext
var. Sonra, bu edittext
içinde bir metin girdim, ancak diğer expandablelistview
başlığını tıklattığımda, girdiğim metin kaybolur.İçindekiler ExpandableListView içinde EditText içeriği bir sonraki ExpandableListView üstbilgisini tıkladığınızda kaybolur
Manifest.xml sayfamda ve diğer birçok düzeltmelerimde zaten android:windowSoftInputMode="adjustPan"
kullanıyorum, ancak çalışmadı.
bu benim adaptör geçerli:
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;
}
}
Ve bu düzen: Ben yukarıdaki kodlarla yaptığı yanlış bir şey
<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>
var mı? Teşekkür ederim.
DÜZENLEME:
kodum chandil03 önerdiği gibi ben bunu düzenlenebilir sonra nasıl göründüğünü budur. Expandablelistview, üstbilgileri genişletdiğimde artık yenilenmiyor. Ama garip bir şekilde, grup pozisyonunda 0 ve çocuk pozisyonunda 0 edittext yazdığımda, o zaman başka bir edittext farklı ayrışma ve çocuk pozisyonunda daha önceki edittext'de yazdığım aynı kesin değerler ortaya çıkıyor. Hatta daha da kötüsü, önceki edittext'deki değerler bazen ortadan kalktı.
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;
}
Bunu denedim ve sonuç gerçekten de expandablelistgörün yenilemedi. Ama garip bir şekilde, grup pozisyonunda 0 ve çocuk pozisyonunda 0 edittext yazdığımda, o zaman başka bir edittext farklı ayrışma ve çocuk pozisyonunda daha önceki edittext'de yazdığım aynı kesin değerler ortaya çıkıyor. Hatta daha da kötüsü, önceki edittext'deki değerler bazen ortadan kalktı. Bu neden oldu? –
ListView, belleği verimli hale getirmek için görünümlerini çevirir/kullanır. Yani eğer setTag ve getTag kullanarak viewHolder kullanarak görünümleri kullanmıyorsanız. Bu problemle karşılaşacaksın. Birden fazla çocuğa edittext ile aynı referansı yapıyorsunuz, bu yüzden bu soruna sahip oluyorsunuz. Sorguyu düzenlediğiniz kodla düzenleyin, böylece bakabilirim. – chandil03
Sorumu düzenledim. Şimdi viewHolder, settag() ve gettag() 'ı kullanmak zorunda olan adaptör, groupview veya childview'de hangisini sormak istiyorum? İkisini de kullandım ama hiçbir şey değişmedi. Ayrıca yukarıdaki kodunuzda holder.addview hakkında bilgi verebilir misiniz? Bunu doğru kullanıp kullanmadığımı bilmiyorum. –