我已经实现了 expandablelistview 并且工作正常。现在我想在每个子列表的末尾添加“加载更多”按钮,这样如果用户单击它,它将从服务器获取更多项目。无论如何要这样做,因为在搜索了很多之后我找不到任何东西。非常感谢任何指导。这是我的自定义适配器:public class ExpandableListAdapterAssets extends BaseExpandableListAdapter implements Filterable {List<View> groupViews;ItemFilter mFilter;boolean showCheckBox;ArrayList<Asset> assetsToClaim;private Context _context;private List<AssetCategory> _listDataHeader; // header titles// child data in format of header title, child titleprivate HashMap<Integer, List<Asset>> _listDataChild;private RequestBackendHelper requestBackendHelper;public ExpandableListAdapterAssets(Context context, List<AssetCategory> listDataHeader, HashMap<Integer, List<Asset>> listChildData, boolean b){ this._context = context; this._listDataHeader = listDataHeader; this._listDataChild = listChildData; groupViews = new ArrayList<>(); showCheckBox = b; assetsToClaim = new ArrayList<>();}@Overridepublic Asset getChild(int groupPosition, int childPosition){ return this._listDataChild.get(this._listDataHeader.get(groupPosition).getId()) .get(childPosition);}public List<Asset> getChildList(int groupPosition){ return this._listDataChild.get(this._listDataHeader.get(groupPosition).getId());}@Overridepublic long getChildId(int groupPosition, int childPosition){ return childPosition;}@Overridepublic View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent){ final Asset assetChild = 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 assetName = (TextView) convertView .findViewById(R.id.txt_asset_name); assetName.setText(assetChild.getName());
1 回答
慕斯王
TA贡献1864条经验 获得超2个赞
您需要插入带有自定义的“加载更多”按钮BaseExpandableAdapter
。这个答案似乎是相关的,因为它展示了如何提供两种不同类型的子视图。棘手的是,当单击“加载更多”按钮时,必须将其删除,然后需要将新项目与底部的新“加载更多”按钮连接在一起 - 然后是子适配器需要通知。它必须表现得像一个虚拟列表项,其中getChildView()
提供当前的childPosition
.
刚刚看到提供的代码;使用 Volley,您很可能需要在第一次加载时少获取一个项目,这样适配器就不会由于添加了一个额外的虚拟项目而失去同步 - 或者至少在最后添加视图类型 2在将网络请求添加到适配器之前。另一种选择可能是让getChildCount()
回报少一个;在分页时必须注意每种情况下的这个附加项目。
添加回答
举报
0/150
提交
取消