편집 할 editText의 결과에 따라 확장 가능 목록 내에서 editText를 자식 카운트 수로 가져 왔습니다. 그러나 EDITTEXT 위치는 항상 다른 또는 childcount 잘못오고오고 나는이 오류 얻을 :android edittext in expandableList 잘못된 색인 및 잘못된 개수?
("java.lang.IndexOutOfBoundsException: Invalid index 3, size is 3")
내 ExpandableListAdapter :
public class ExpandableListAdapter extends BaseExpandableListAdapter {
public ExpandableListView expandableListView;
private ChildViewHolder childViewHolder;
private GroupViewHolder groupViewHolder;
private Context _context;
private ArrayList<BBQrValidateModel.Campaigns> mDataCampaignModel; //stampcount and totalneed
public ExpandableListAdapter(ArrayList<BBQrValidateModel.Campaigns> mDataCampaignModel,
Context context, ExpandableListView expandableListView) {
this._context = context;
this.mDataCampaignModel = mDataCampaignModel;
this.expandableListView = expandableListView;
}
@Override
public Object getChild(int groupPosition, int childPosititon) {
return campaign.coffeeGiftCount;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
BBQrValidateModel.Campaigns campaign = mDataCampaignModel.get(groupPosition);
if (convertView == null) {
convertView = MainActivity.inflater.inflate(R.layout.row_campaign_buy_or_hide, parent, false);
childViewHolder = new ChildViewHolder();
childViewHolder.txtCoffeeGift = convertView.findViewById(R.id.txtCoffeeGift);
childViewHolder.txtCoffeeHide = convertView.findViewById(R.id.txtCoffeeHide);
childViewHolder.txtCoffeeUse = convertView.findViewById(R.id.txtCoffeeUse);
convertView.setTag(childViewHolder);
} else {
childViewHolder = (ChildViewHolder) convertView.getTag();
}
childViewHolder.txtCoffeeGift.setText(campaign.prize);
//kullan ve sakla tıklanınca modeldekı degısıklıgı buradan yapıcaz
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
BBQrValidateModel.Campaigns campaign = mDataCampaignModel.get(groupPosition);
return campaign.coffeeGiftCount;
}
@Override
public Object getGroup(int groupPosition) {
return mDataCampaignModel.get(groupPosition);
}
@Override
public int getGroupCount() {
return (mDataCampaignModel == null) ? 0 : mDataCampaignModel.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(final int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
final BBQrValidateModel.Campaigns campaign = mDataCampaignModel.get(groupPosition);
if (convertView == null) {
convertView = MainActivity.inflater.inflate(R.layout.row_campaigndetail, parent, false);
groupViewHolder = new GroupViewHolder();
groupViewHolder.txtStampCount = convertView.findViewById(R.id.txtStampCount);
groupViewHolder.txtCampaignName = convertView.findViewById(R.id.txtCampaignName);
groupViewHolder.txtTotalNeeds = convertView.findViewById(R.id.txtTotalNeeds);
groupViewHolder.btnFreepProductNum1 = convertView.findViewById(R.id.btnFreepProductNum1);
groupViewHolder.btnFreepProductNum2 = convertView.findViewById(R.id.btnFreepProductNum2);
groupViewHolder.btnFreepProductNum3 = convertView.findViewById(R.id.btnFreepProductNum3);
groupViewHolder.btnFreepProductNum4 = convertView.findViewById(R.id.btnFreepProductNum4);
groupViewHolder.btnFreepProductNum5 = convertView.findViewById(R.id.btnFreepProductNum5);
groupViewHolder.edtPurchasedCoffeeCount = convertView.findViewById(R.id.edtPurchasedCoffeeCount);
convertView.setTag(groupViewHolder);
} else {
groupViewHolder = (GroupViewHolder) convertView.getTag();
}
groupViewHolder.edtPurchasedCoffeeCount.setId(groupPosition);
groupViewHolder.txtTotalNeeds.setText(String.valueOf(campaign.totalNeeds));
groupViewHolder.txtStampCount.setText(String.valueOf(campaign.stampCount));
groupViewHolder.txtCampaignName.setText(campaign.description);
if (groupViewHolder.edtPurchasedCoffeeCount.getText().toString().isEmpty()) {
campaign.edtPurchasedCoffeeCount = 0;
} else {
campaign.edtPurchasedCoffeeCount = Integer.valueOf(groupViewHolder.edtPurchasedCoffeeCount
.getText().toString());
}
final int totalneeds = campaign.totalNeeds;
final int stampcount = campaign.stampCount;
campaign.coffeeGiftCount = (stampcount + campaign.edtPurchasedCoffeeCount)/totalneeds;
TextWatcher inputTextWatcher = new TextWatcher()
{
public void onTextChanged(CharSequence s, int start, int before, int count)
{
if (stampcount + campaign.coffeeGiftCount > totalneeds)
{
campaign.coffeeGiftCount = (stampcount + campaign.edtPurchasedCoffeeCount)/totalneeds;
}
}
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
}
public void afterTextChanged(Editable s)
{
notifyDataSetChanged();
}
};
groupViewHolder.edtPurchasedCoffeeCount.addTextChangedListener(inputTextWatcher);
expandableListView.expandGroup(groupPosition);
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
내 ViewHolders (어댑터 내부 클래스) :
public final class GroupViewHolder {
TextView txtStampCount;
TextView txtCampaignName;
TextView txtTotalNeeds;
EditText edtPurchasedCoffeeCount;
Button btnFreepProductNum1;
Button btnFreepProductNum2;
Button btnFreepProductNum3;
Button btnFreepProductNum4;
Button btnFreepProductNum5;
}
public final class ChildViewHolder {
TextView txtCoffeeGift;
TextView txtCoffeeUse;
TextView txtCoffeeHide;
}
}
난 내 코드를 변경하지만 childcount이 childcount 같은 – enderkoca
https://i.hizliresim.com/Gy21aZ.jpg을 업데이트되지 않습니다 ==> (0이/edtext + 0)/totalneed – enderkoca