我有一個ParentActivity具有TextView tvCount,一個片段具有可擴展列表視圖。我需要更新可展開列表視圖中選定的兒童人數。如何將可擴展列表視圖的選定子視圖數據從片段發送到父活動?
在我的片段,我有一個適配器 -
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」究竟是什麼? –