package com.hupu.games.activity; import java.util.LinkedList; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.hupu.games.R; import com.hupu.games.activity.HupuLaunchActivity.LeagusAdapter.League; import com.hupu.games.common.HuPuRes; import com.hupu.games.common.SharedPreferencesMgr; import com.hupu.games.data.FollowResultEntity; import com.hupu.games.data.LeaguesEntity; import com.hupu.games.data.TeamsEntity; import com.hupu.games.db.HuPuDBAdapter; import com.hupu.http.HupuHttpHandler; import com.koushikdutta.urlimageviewhelper.UrlImageViewHelper; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseExpandableListAdapter; import android.widget.ExpandableListView; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.ExpandableListView.OnChildClickListener; import android.widget.ExpandableListView.OnGroupClickListener; import android.widget.ExpandableListView.OnGroupExpandListener; public class ChooseTeamsActivity extends HupuBaseActivity { private ExpandableListView expandableListView; private ExpandableAdapter viewAdapter; private LinkedList<LeaguesEntity> leaguesEntities; HupuLaunchActivity hupuLeague; Intent intent; HuPuDBAdapter mDBAdapter; @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.layout_follow_teams_init); expandableListView = (ExpandableListView) findViewById(R.id.list_team); leaguesEntities = new LinkedList<LeaguesEntity>(); // 获取联赛 集合信息 /*for (LeaguesEntity league : mApp.loadLeagues()) { if (league.template.equals("nba") || league.template.equals("cba") || league.template.equals("soccerleagues") ||league.template.equals("soccercupleagues")) { leaguesEntities.add(league); } }*/ leaguesEntities = mApp.loadLeagues(); viewAdapter = new ExpandableAdapter(LayoutInflater.from(this), leaguesEntities); expandableListView.setAdapter(viewAdapter); expandableListView.expandGroup(0); expandableListView.setOnChildClickListener(childClickListener); expandableListView.setOnGroupClickListener(onGroupClickListener); expandableListView.setGroupIndicator(null); setOnClickListener(R.id.btn_done); setOnClickListener(R.id.btn_previous); } int expandFlag = 0; private OnGroupClickListener onGroupClickListener = new OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView listView, View v, int groupPosition, long id) { if (expandFlag == -1) { // 展开被选的group listView.expandGroup(groupPosition); // 设置被选中的group置于顶端 listView.setSelectedGroup(groupPosition); expandFlag = groupPosition; } else if (expandFlag == groupPosition) { listView.collapseGroup(expandFlag); expandFlag = -1; } else { listView.collapseGroup(expandFlag); // 展开被选的group listView.expandGroup(groupPosition); // 设置被选中的group置于顶端 listView.setSelectedGroup(groupPosition); expandFlag = groupPosition; } return true; } }; private OnChildClickListener childClickListener = new OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View view, int groupPosition, int childPosition, long id) { // TODO Auto-generated method stub if (leaguesEntities.get(groupPosition).mList.get(childPosition).is_follow == 1) { ((com.hupu.games.activity.ChooseTeamsActivity.ExpandableAdapter.Child) view.getTag()).chooseBox.setBackgroundResource(R.drawable.btn_menu_choose_up); leaguesEntities.get(groupPosition).mList.get(childPosition).is_follow = 0; } else { ((com.hupu.games.activity.ChooseTeamsActivity.ExpandableAdapter.Child) view.getTag()).chooseBox.setBackgroundResource(R.drawable.choose_btn_down); leaguesEntities.get(groupPosition).mList.get(childPosition).is_follow = 1; leaguesEntities.get (groupPosition).is_follow = 1; } int leagueIndex = 0, teamIndex = 0; for (LeaguesEntity league : leaguesEntities) { teamIndex = 0; boolean isFollowTeam = false; for (TeamsEntity team : league.mList) { if (team.is_follow == 1) { isFollowTeam = true; } if (team.name.equals(leaguesEntities.get(groupPosition).mList.get(childPosition).name) && league.game_type.equals(leaguesEntities.get(groupPosition).game_type)) { //if (team.name.equals(leaguesEntities.get(groupPosition).mList.get(childPosition).name) ) { leaguesEntities.get(leagueIndex).mList.get(teamIndex).is_follow = leaguesEntities .get(groupPosition).mList.get(childPosition).is_follow; } teamIndex++; } if (leaguesEntities.get(leagueIndex).is_follow == 0) { leaguesEntities.get(leagueIndex).is_follow = isFollowTeam?1:0; } leagueIndex++; } viewAdapter.notifyDataSetChanged(); return false; } }; @Override public void treatClickEvent(int id) { // TODO Auto-generated method stub switch (id) { case R.id.btn_done: int followNum = 0; for (LeaguesEntity league : leaguesEntities) { if (league.is_follow == 1) followNum ++; } if (followNum == 0) { for (int i = 0; i < leaguesEntities.size(); i++) { leaguesEntities.get(i).is_follow = 1; } } // 插入数据 mApp.insertLeaguesFrist(leaguesEntities); mApp.updateTeams(leaguesEntities); // 拉取 带顺序的数据 leaguesEntities = mApp.loadLeagues(); mApp.followLeague(leaguesEntities); mApp.followOnlyTeams(leaguesEntities); intent = new Intent(this, HupuHomeActivity.class); intent.putExtra("byIcon", true);// 标识用户是点击进入的。 intent.putExtra("load", true); startActivity(intent); finish(); break; case R.id.btn_previous: intent = new Intent(this, HupuLaunchActivity.class); startActivity(intent); break; default: break; } super.treatClickEvent(id); } class ExpandableAdapter extends BaseExpandableListAdapter { // private Context context; LinkedList<LeaguesEntity> leagueListEntities; LayoutInflater layoutInflater; /* * 构造函数: 参数1:context对象 参数2:一级列表数据源 参数3:二级列表数据源 */ public ExpandableAdapter(LayoutInflater layoutInflater, LinkedList<LeaguesEntity> groups) { this.leagueListEntities = groups; this.layoutInflater = layoutInflater; } @Override public Object getChild(int groupPosition, int childPosition) { if (leagueListEntities.get(groupPosition).mList == null) { return ""; } else { return leagueListEntities.get(groupPosition).mList.get(childPosition).name; } } @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } // 获取二级列表的View对象 @Override public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { @SuppressWarnings("unchecked") String text = (String) getChild(groupPosition, childPosition); // LayoutInflater layoutInflater = (LayoutInflater) // context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); // 获取二级列表对应的布局文件, 并将其各元素设置相应的属性 Child child; if (convertView == null) { convertView = (RelativeLayout) layoutInflater.inflate( R.layout.choose_teams_child, null); child = new Child(); child.teamLogo = (ImageView) convertView.findViewById(R.id.team_logo); child.teamName = (TextView) convertView.findViewById(R.id.team_name); child.chooseBox = (ImageView) convertView.findViewById(R.id.child_checkbox); convertView.setTag(child); } else { child = (Child) convertView.getTag(); } child.teamName.setText(text); UrlImageViewHelper.setUrlDrawable(child.teamLogo,leagueListEntities.get(groupPosition).mList.get(childPosition).logo); if (leaguesEntities.get(groupPosition).mList.get(childPosition).is_follow == 1) { child.chooseBox.setBackgroundResource(R.drawable.btn_menu_choose_down); } else { child.chooseBox.setBackgroundResource(R.drawable.btn_menu_choose_up); } // child.chooseBox.setBackgroundResource(R.drawable.choose_btn); /* * convertView.setOnClickListener(new OnClickListener() { * * @Override * public void onClick(View v) * { * // TODO Auto-generated method stub * * Log.w("ccc", "xxxxx"); * * } * }); */ return convertView; } @Override public int getChildrenCount(int groupPosition) { if (leagueListEntities.get(groupPosition).mList == null) { return 0; } else { return leagueListEntities.get(groupPosition).mList.size(); } } @Override public Object getGroup(int groupPosition) { return leagueListEntities.get(groupPosition).name; } @Override public int getGroupCount() { return leagueListEntities.size(); } @Override public long getGroupId(int groupPosition) { return groupPosition; } // 获取一级列表View对象 @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { String text = leagueListEntities.get(groupPosition).name; Group group; if (convertView == null) { convertView = (RelativeLayout) layoutInflater.inflate( R.layout.choose_teams_group, null); group = new Group(); group.leagueLayout = ((RelativeLayout) convertView.findViewById(R.id.league_layout)); group.leagueLogo = ((ImageView) convertView.findViewById(R.id.leagu_logo)); group.leagueName = (TextView) convertView.findViewById(R.id.league_name); group.chooseNum = (TextView) convertView.findViewById(R.id.follow_team_num); group.groupDown = ((ImageView) convertView.findViewById(R.id.group_img)); convertView.setTag(group); } else { group = (Group) convertView.getTag(); } group.leagueName.setText(text); UrlImageViewHelper.setUrlDrawable(group.leagueLogo, leagueListEntities.get(groupPosition).logo); int followNum = 0; for (TeamsEntity team: leagueListEntities.get(groupPosition).mList) { followNum = team.is_follow == 1 ? followNum + 1:followNum; } if (followNum >0) { group.chooseNum.setText("已关注 "+followNum+" 支"); }else { group.chooseNum.setText(""); } followNum = 0; if (isExpanded) { group.groupDown.setImageResource(R.drawable.group_up); } else { group.groupDown.setImageResource(R.drawable.group_down); } if (leagueListEntities.get(groupPosition).template.equals("nba") || leagueListEntities.get(groupPosition).template.equals("cba") || leagueListEntities.get(groupPosition).template.equals("soccerleagues") ||leagueListEntities.get(groupPosition).template.equals("soccercupleagues")) { convertView.setVisibility(View.VISIBLE); group.leagueLayout.setVisibility(View.VISIBLE); }else { convertView.setVisibility(View.GONE); group.leagueLayout.setVisibility(View.GONE); } return convertView; } @Override public boolean hasStableIds() { return false; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { // Log.d("isChildSelectable", // "groupPosition="+groupPosition+" ;childPosition="+childPosition); return true; } private class Group { RelativeLayout leagueLayout; TextView leagueName; ImageView leagueLogo; TextView chooseNum; ImageView groupDown; } private class Child { TextView teamName; ImageView teamLogo; ImageView chooseBox; } } }