【问题标题】:Getting error in child view of Expandable listview在可扩展列表视图的子视图中出现错误
【发布时间】:2015-08-20 11:57:21
【问题描述】:

我想在我的应用程序中使用 ExpandableListView。直到现在一切正常,除了childView。所有的 childView 都与每一个 parentView 匹配。

public class AdTypesAdapter extends BaseExpandableListAdapter {

Context context;
public LayoutInflater minflater;
ArrayList<Q2_AdTypeList> adTypeList;

public AdTypesAdapter(Context context, ArrayList<Q2_AdTypeList> adTypeList) {
    // TODO Auto-generated constructor stub
    this.adTypeList = adTypeList;
    context = context;
}

public void setInflater(LayoutInflater mInflater, Context context) {
    this.minflater = mInflater;
    context = context;
}

@Override
public int getGroupCount() {
    // TODO Auto-generated method stub
    return adTypeList.size();
}

@Override
public int getChildrenCount(int groupPosition) {
    // TODO Auto-generated method stub
    return adTypeList.size();
}

@Override
public Object getGroup(int groupPosition) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public Object getChild(int groupPosition, int childPosition) {
    // TODO Auto-generated method stub
    return adTypeList.get(childPosition);
}

@Override
public long getGroupId(int groupPosition) {
    // TODO Auto-generated method stub
    return groupPosition;
}

@Override
public long getChildId(int groupPosition, int childPosition) {
    // TODO Auto-generated method stub
    return childPosition;
}

@Override
public boolean hasStableIds() {
    // TODO Auto-generated method stub
    return false;
}

@Override
public View getGroupView(int groupPosition, boolean isExpanded,
        View convertView, ViewGroup parent) {
    if (convertView == null) {
        convertView = minflater.inflate(R.layout.ad_details_parent_layout,
                null);
    }

    TextView noOfImpressions_textView = (TextView) convertView
            .findViewById(R.id.noOfImpressions_textView);
    TextView amount_textView = (TextView) convertView
            .findViewById(R.id.amount_textView);
    noOfImpressions_textView.setText(String.valueOf(adTypeList.get(
            groupPosition).getAdvImpression()));
    amount_textView.setText("$"
            + String.valueOf(adTypeList.get(groupPosition).getAdvPrice()));

    // ((TextView) convertView).setChecked(isExpanded);
    return convertView;
}

@Override
public View getChildView(int groupPosition, int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) {

    TextView adDesc_textView = null;
    if (convertView == null) {
        convertView = minflater.inflate(R.layout.ad_details_child_layout,
                null);
    }
    adDesc_textView = (TextView) convertView
            .findViewById(R.id.adDesc_textView);

    adDesc_textView.setText(adTypeList.get(childPosition).getAdvDesc());
    return convertView;
}

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
    // TODO Auto-generated method stub
    return false;
}

}

这里的 adTypeList 包含 parent 和 childview![ I would like to get exactly what it is in the image. But what I get in my output is that the total number of childview I have is attached to each and every parentview]1 的数据

【问题讨论】:

  • 嗨,Parthiban 您对 (adTypeList) getGroup 和 getChild 使用相同的数组
  • 是的...我对 getGroup 和 getChild 使用相同的数组。我可以知道这是否正确??? @Ashraf

标签: android arraylist android-arrayadapter expandablelistview


【解决方案1】:

我认为您的 getChildrenCount 应该始终根据您的数据模型返回 1(每个父母正好有 1 个孩子)

@Override
public int getChildrenCount(int groupPosition)
{
    return 1;
}

通过返回adTypeList.size(),您基本上表示groupPosition 位置的组有adTypeList.size() 子级。

【讨论】:

  • 您好,感谢您的回答。但是当我尝试在每个 parentView 下重复相同的值时。由于每个 childView 都有不同的值,请您再帮我一步吗?
  • 我的假设是,在getChildView 中,您没有将adDesc_textView.setText(adTypeList.get(childPosition).getAdvDesc()); 更改为adDesc_textView.setText(adTypeList.get(groupPosition).getAdvDesc());。根据您的视图模型,您需要从组位置获取子数据(因为目前,childPosition 将始终为 1)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-27
  • 1970-01-01
  • 2012-03-28
相关资源
最近更新 更多