【发布时间】:2017-11-03 08:04:14
【问题描述】:
滚动时我在可扩展列表视图中遇到问题,edittext 值更改。我尝试在模式类中存储值并在视图创建时设置该值。但 Edittext 值在滚动时更改。请提出任何解决方案。这是我的代码对于可扩展的列表视图。给我一些提示或我在此代码中出错的地方。
以下是我在 android studio 中的日志
11-04 14:31:59.826 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{48bc9e8 VFED..CL。 ........ 0,0-514,118 #7f080061 app:id/edtQty} Pos0 11-04 14:32:04.862 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{a67b858 VFED..CL. ........ 0,0-514,118 #7f080061 app:id/edtQty} Pos4 11-04 14:32:04.911 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{48bc9e8 VFED..CL。 ......ID 0,0-514,118 #7f080061 app:id/edtQty} Pos5 11-04 14:32:04.932 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{39f8d9c VFED..CL。 ........ 0,0-514,118 #7f080061 app:id/edtQty} Pos6 11-04 14:32:05.681 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{d8d264 VFED..CL. ........ 0,0-514,118 #7f080061 app:id/edtQty} Pos3 11-04 14:32:05.738 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{bd81fa0 VFED..CL. ........ 0,0-514,118 #7f080061 app:id/edtQty} Pos2 11-04 14:32:05.815 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{39f8d9c VFED..CL。 ........ 0,0-514,118 #7f080061 app:id/edtQty} Pos1 11-04 14:32:05.879 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{48bc9e8 VFED..CL。 ........ 0,0-514,118 #7f080061 app:id/edtQty} Pos0 11-04 14:32:06.201 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{a67b858 VFED..CL. ........ 0,0-514,118 #7f080061 app:id/edtQty} Pos4 11-04 14:32:06.235 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{39f8d9c VFED..CL。 ........ 0,0-514,118 #7f080061 app:id/edtQty} Pos5 11-04 14:32:06.289 3632-3632/com.codefuelindia.healthcircleordermgmt E/edittext:-: android.support.design.widget.TextInputEditText{48bc9e8 VFED..CL. ......ID 0,0-514,118 #7f080061 app:id/edtQty} Pos6
edittext引用重复。如何解决?
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.content.Context;
import android.graphics.Typeface;
import android.support.design.widget.TextInputEditText;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;
import com.codefuelindia.healthcircleordermgmt.R;
import com.codefuelindia.healthcircleordermgmt.model.CatMaster;
import com.codefuelindia.healthcircleordermgmt.model.ProChild;
public class ExpandableListAdapter extends BaseExpandableListAdapter {
private Context _context;
private ArrayList<CatMaster> _listDataHeader; // header titles
// child data in format of header title, child title
private HashMap<CatMaster, ArrayList<ProChild>> _listDataChild;
public ExpandableListAdapter(Context context, ArrayList<CatMaster> listDataHeader,
HashMap<CatMaster, ArrayList<ProChild>> 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 ProChild childText = (ProChild) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
}
TextView txtListChild = (TextView) convertView
.findViewById(R.id.lblListItem);
TextView tvUnitPrice;
final TextInputEditText edtQty;
final TextView tvTotalPrice;
tvUnitPrice = (TextView) convertView.findViewById(R.id.tvUnitPrice);
edtQty = (TextInputEditText) convertView.findViewById(R.id.edtQty);
edtQty.setText();
tvTotalPrice = (TextView) convertView.findViewById(R.id.tvTotalPrice);
txtListChild.setText(childText.getName());
tvUnitPrice.setText(childText.getPrice());
edtQty.setText(childText.getQty());
edtQty.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
f(!TextUtils.isEmpty(charSequence.toString())){
childText.setQty(charSequence.toString());
final double total=Double.parseDouble(childText.getPrice())*Integer.parseInt(charSequence.toString());
tvTotalPrice.setText("Total: ".concat(String.valueOf(total)));
}
else {
tvTotalPrice.setText("");
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
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) {
CatMaster headerTitle = (CatMaster) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_group, null);
}
TextView lblListHeader = (TextView) convertView
.findViewById(R.id.lblListHeader);
lblListHeader.setTypeface(null, Typeface.BOLD);
lblListHeader.setText(headerTitle.getCatName());
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
【问题讨论】:
-
在 getGroupView 中。您需要获取 groupview 对象并将文本设置为它而不是直接 convertview ?
-
不工作..请给出一些有效的答案..editext分配给多个edittext。滚动时在其他edittext中反映相同的值
-
@Amod Gokhale 我在子视图中有编辑文本。那么如何在滚动时进行管理?
-
我认为添加 groupView 应该可以解决您的问题,但如果不是,您可能想尝试本教程并将您的代码与它进行比较 vogella.com/tutorials/AndroidListView/…