gpt4 book ai didi

expandableList 中的 android editText 错误索引和错误计数?

转载 作者:太空狗 更新时间:2023-10-29 14:42:00 24 4
gpt4 key购买 nike

我根据要编辑的editText的结果,得到Expandable List里面的editText为childcount的个数。但 editText 位置总是不同或 childcount 出错,我收到此错误:

("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;
}

}

最佳答案

在 getChild 方法中你返回 0 意味着你没有那个 child 的任何子对象,你应该返回那个位置的子对象的组数据。

public class ExpandableListAdapter extends BaseExpandableListAdapter {

private Context _context;
private List<String> _listDataHeader; // header titles
// child data in format of header title, child title
private HashMap<String, List<String>> _listDataChild;

public ExpandableListAdapter(Context context, List<String> listDataHeader,
HashMap<String, List<String>> 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(int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {

final String childText = (String) getChild(groupPosition, childPosition);

if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
}

EditText edtListChild = (EditText) convertView
.findViewById(R.id.lblListItem);

txtListChild.setText(childText);
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 lblListHeader = (TextView) convertView
.findViewById(R.id.lblListHeader);
lblListHeader.setTypeface(null, Typeface.BOLD);
lblListHeader.setText(headerTitle);

return convertView;
}

@Override
public boolean hasStableIds() {
return false;
}

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}

这段代码对你有帮助,对我也有帮助。

关于expandableList 中的 android editText 错误索引和错误计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46534905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com