【发布时间】:2016-05-27 04:12:10
【问题描述】:
我有一个具有 TextView tvCount 的 ParentActivity,一个具有可扩展列表视图的片段。我需要更新在可展开列表视图中选择的子项数。
在我的片段中,我有一个适配器 -
mExpandableListView = (ExpandableListView) view.findViewById(R.id.lvExp);
mAdapter = new ExpandableServiceListViewAdapter(getActivity(),
mGroups);
ExpandableServiceListViewAdapter.java
public class ExpandableServiceListViewAdapter extends BaseExpandableListAdapter {
private static SparseArray<GroupModel> mGroups;
public LayoutInflater mInflater;
public Activity mActivity;
public ExpandableServiceListViewAdapter(Activity act, SparseArray<GroupModel> groups) {
mActivity = act;
this.mGroups = groups;
mInflater = act.getLayoutInflater();
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return mGroups.get(groupPosition).children.get(childPosition);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return 0;
}
@Override
public View getChildView(final int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final GroupModel children = (GroupModel) getChild(groupPosition, childPosition);
TextView title, duration, gender, actualprice, finalprice;
final TextView tvCounter, tvTotalCost;
ImageView offericon = null;
final CheckBox checkBox;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.services_item, null);
}
title = (TextView) convertView.findViewById(R.id.tv_title);
duration = (TextView) convertView.findViewById(R.id.tv_duration);
gender = (TextView) convertView.findViewById(R.id.tv_gender);
actualprice = (TextView) convertView.findViewById(R.id.tv_actualprice);
finalprice = (TextView) convertView.findViewById(R.id.tv_finalprice);
offericon = (ImageView) convertView.findViewById(R.id.iv_offer);
checkBox = (CheckBox) convertView.findViewById(R.id.cb_check);
tvTotalCost = (TextView) mActivity.findViewById(R.id.tv_cost);
tvCounter = (TextView) mActivity.findViewById(R.id.tv_counter);
title.setText(children.getmServiceModel().getmServiceTitle());
duration.setText("• " + children.getmServiceModel().getmDuration() + "min");
gender.setText("• " + children.getmServiceModel().getmGender());
actualprice.setText("Rs " + children.getmServiceModel().getmActualPrice());
actualprice.setPaintFlags(actualprice.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
finalprice.setText("\u20B9" + children.getmServiceModel().getmFinalPrice());
if (children.getmServiceModel().getmHasOffer()) {
offericon.setVisibility(View.VISIBLE);
} else {
offericon.setVisibility(View.INVISIBLE);
}
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkBox.toggle();
if (checkBox.isChecked()) {
((BaseActivity) mActivity).showToast("Yes");
BusinessActivity.mSelectedMap.put((groupPosition * 1000) + childPosition, children);
} else {
((BaseActivity) mActivity).showToast("No");
BusinessActivity.mSelectedMap.remove((groupPosition * 1000) + childPosition);
}
}
});
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return mGroups.get(groupPosition).children.size();
}
@Override
public Object getGroup(int groupPosition) {
return mGroups.get(groupPosition);
}
@Override
public int getGroupCount() {
return mGroups.size();
}
@Override
public void onGroupCollapsed(int groupPosition) {
super.onGroupCollapsed(groupPosition);
}
@Override
public void onGroupExpanded(int groupPosition) {
super.onGroupExpanded(groupPosition);
}
@Override
public long getGroupId(int groupPosition) {
return 0;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.services_group_header, null);
}
GroupModel group = (GroupModel) getGroup(groupPosition);
TextView title = (TextView) convertView.findViewById(R.id.tv_title);
title.setText(group.getmTitle());
TextView count = (TextView) convertView.findViewById(R.id.tv_count);
count.setText("(" + group.getmCount() + ")");
ImageView iv = (ImageView) convertView.findViewById(R.id.iv_offer);
if (group.getmSubCategory().getmHasOffers())
iv.setVisibility(View.VISIBLE);
else
iv.setVisibility(View.INVISIBLE);
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
}
在这里,我正在尝试创建所选子项的地图,我需要将其发送到父活动以更新计数。
BusinessActivity.java 是具有片段的父活动。 我在活动中定义了 mSelectedMap。我在选择时将条目添加到此地图中,在未选择时将其删除。
有人可以帮我如何设置此适配器的父活动中的计数值。
【问题讨论】:
-
您想将整个
BusinessActivity.mSelectedMap发送到父活动吗?如果是的话,你在哪里创建那个对象?mSelectedMap到底是什么?
标签: android android-fragments expandablelistview android-fragmentactivity expandablelistadapter