子供の中に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>
は、上記のコードで私がやった何か問題はありますか?ありがとうございました。
EDIT:
これは私のコードは、chandil03によって示唆されているように私はそれを編集した後にどのように見えるかです。ヘッダーを展開すると、expandablelistviewが更新されなくなりました。しかし、不思議なことに、私がgroupposition 0と子の位置0でedittextに値を入力すると、別のgouppositionとchildpositionの中のいくつかの他のedittextに、前のedittextで入力した同じ正確な値が表示されます。それとも、見知らぬ人でも、前の編集時の値が時折消え去ってしまいます。
私はそれを試みましたが、結果は実際にはexpandablelistviewは更新されませんでした。しかし、不思議なことに、私がgroupposition 0と子の位置0でedittextに値を入力すると、別のgouppositionとchildpositionの中のいくつかの他のedittextに、前のedittextで入力した同じ正確な値が表示されます。それとも、見知らぬ人でも、前の編集時の値が時折消え去ってしまいます。なぜそれが起こったのですか? –
ListViewは、ビューを循環/使用してメモリを効率的にします。したがって、setTagとgetTagを使用してviewHolderを使用してビューを処理していない場合。この問題に直面するでしょう。あなたは、この問題を抱えている理由の1つ以上の子にedittextの同じ参照を設定しています。調べることができるように、あなたの修正されたコードであなたの質問を編集してください。 – chandil03
質問を編集しました。今、viewHolder、settag()、およびgettag()を使用しなければならないアダプター、グループビュー、または子ビューのどれを要求したいのですか?私は彼らに両方を使用させましたが、何も変わりません。上記のコードでholder.addviewについて教えてください。私はそれを正しく使うかどうかわかりません。 –