package com.pps.carsign.activity; import java.util.ArrayList; import java.util.List; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import com.pps.carsign.BaseActivity; import com.pps.carsign.adapter.ListSignAdapter; /** * 根据汽车的产地 进行显示相应的汽车品牌列表 * * @author jiangqingqing * @time 2013/10/11 15:21 */ public class ListSignActivity extends BaseActivity { private Button btn_head_back; private TextView tv_title_head; private ListView lv_list_sign; private Integer[] mImageView_Icons; private String[] mCar_Names; private String[] mCar_Contents; private String[] mCar_Country; private ListSignAdapter mListSignAdapter; private Intent mIntent; //private ProgressBar progress_lv_foot; private TextView tv_lv_foot; private boolean isRefresh=false; private int NUM=8; //初始化加载的条数 public static int list_item; // 标记点击的汽车产地类型 private int visibleLastIndex = 0; // 最后的可视项索引 private int visibleItemCount; // 当前窗口可见项总数 private int MaxDataNum=0; // 最大加载条数 private List<Integer> mLists; private int length=0; private View lv_foot; private Handler mHandler=new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.list_sign); initView(); initValidata(); bindData(); initListener(); } /** * 初始化界面元素 */ private void initView() { btn_head_back=(Button)findViewById(R.id.btn_head_back); tv_title_head=(TextView)findViewById(R.id.tv_title_head); lv_list_sign=(ListView)findViewById(R.id.lv_list_sign); } /** * 初始化变量 */ private void initValidata() { lv_foot=LayoutInflater.from(this).inflate(R.layout.foot, null); //progress_lv_foot=(ProgressBar)lv_foot.findViewById(R.id.progress_lv_foot); tv_lv_foot=(TextView)lv_foot.findViewById(R.id.tv_lv_foot); lv_list_sign.addFooterView(lv_foot); //list_item=getIntent().getIntExtra("list_item", 0); mCar_Country=getResources().getStringArray(R.array.country); switch (list_item) { case 0: //国产 mImageView_Icons=new Integer[]{R.drawable.china_1,R.drawable.china_2,R.drawable.china_3, R.drawable.china_4,R.drawable.china_5,R.drawable.china_6,R.drawable.china_7, R.drawable.china_8,R.drawable.china_9,R.drawable.china_10,R.drawable.china_11, R.drawable.china_12,R.drawable.china_13,R.drawable.china_14,R.drawable.china_15, R.drawable.china_16,R.drawable.china_17,R.drawable.china_18,R.drawable.china_19, R.drawable.china_20,R.drawable.china_21,R.drawable.china_22,R.drawable.china_23, R.drawable.china_24,R.drawable.china_25,R.drawable.china_26,R.drawable.china_27, R.drawable.china_28,R.drawable.china_29,R.drawable.china_30,R.drawable.china_31, R.drawable.china_32,R.drawable.china_33,R.drawable.china_34,R.drawable.china_35, R.drawable.china_36,R.drawable.china_37,R.drawable.china_38,R.drawable.china_39, R.drawable.china_40}; mLists=new ArrayList<Integer>(); length=mImageView_Icons.length; MaxDataNum=length; //进行判断初始化的条数 if(MaxDataNum<=NUM) { tv_lv_foot.setVisibility(View.GONE); for(int i=0;i<MaxDataNum;i++) { mLists.add(mImageView_Icons[i]); } }else { for(int i=0;i<NUM;i++) { mLists.add(mImageView_Icons[i]); } } mCar_Names=getResources().getStringArray(R.array.china_car_names); mCar_Contents=getResources().getStringArray(R.array.china_car_contents); mListSignAdapter=new ListSignAdapter(this, mLists, mCar_Names); break; case 1: //德国 mImageView_Icons=new Integer[]{R.drawable.germany_1,R.drawable.germary_2, R.drawable.germary_3,R.drawable.germary_4,R.drawable.germary_5, R.drawable.germary_6,R.drawable.germary_7,R.drawable.germary_8, R.drawable.germary_9,R.drawable.germary_10 }; mLists=new ArrayList<Integer>(); length=mImageView_Icons.length; MaxDataNum=length; //进行判断初始化的条数 if(MaxDataNum<=NUM) { tv_lv_foot.setVisibility(View.GONE); for(int i=0;i<MaxDataNum;i++) { mLists.add(mImageView_Icons[i]); } }else { for(int i=0;i<NUM;i++) { mLists.add(mImageView_Icons[i]); } } mCar_Names=getResources().getStringArray(R.array.germary_car_names); mCar_Contents=getResources().getStringArray(R.array.germary_car_content); mListSignAdapter=new ListSignAdapter(this, mLists, mCar_Names); break; case 2: //美国 mImageView_Icons=new Integer[]{R.drawable.usa_1,R.drawable.usa_2, R.drawable.usa_3,R.drawable.usa_4,R.drawable.usa_5, R.drawable.usa_6,R.drawable.usa_7,R.drawable.usa_8, R.drawable.usa_9,R.drawable.usa_10,R.drawable.usa_11}; mLists=new ArrayList<Integer>(); length=mImageView_Icons.length; MaxDataNum=length; //进行判断初始化的条数 if(MaxDataNum<=NUM) { tv_lv_foot.setVisibility(View.GONE); for(int i=0;i<MaxDataNum;i++) { mLists.add(mImageView_Icons[i]); } }else { for(int i=0;i<NUM;i++) { mLists.add(mImageView_Icons[i]); } } mCar_Names=getResources().getStringArray(R.array.usa_car_names); mCar_Contents=getResources().getStringArray(R.array.usa_car_contents); mListSignAdapter=new ListSignAdapter(this, mLists, mCar_Names); break; case 3: //英国 mImageView_Icons=new Integer[]{R.drawable.uk_1,R.drawable.uk_2, R.drawable.uk_3,R.drawable.uk_4,R.drawable.uk_5,R.drawable.uk_6}; mLists=new ArrayList<Integer>(); length=mImageView_Icons.length; MaxDataNum=length; //进行判断初始化的条数 if(MaxDataNum<=NUM) { tv_lv_foot.setVisibility(View.GONE); for(int i=0;i<MaxDataNum;i++) { mLists.add(mImageView_Icons[i]); } }else { for(int i=0;i<NUM;i++) { mLists.add(mImageView_Icons[i]); } } mCar_Names=getResources().getStringArray(R.array.uk_car_names); mCar_Contents=getResources().getStringArray(R.array.uk_car_contents); mListSignAdapter=new ListSignAdapter(this, mLists, mCar_Names); break; case 4: //法国 mImageView_Icons=new Integer[]{R.drawable.france_1,R.drawable.france_2,R.drawable.france_3,R.drawable.france_4}; mImageView_Icons=new Integer[]{R.drawable.uk_1,R.drawable.uk_2, R.drawable.uk_3,R.drawable.uk_4,R.drawable.uk_5,R.drawable.uk_6}; mLists=new ArrayList<Integer>(); length=mImageView_Icons.length; MaxDataNum=length; //进行判断初始化的条数 if(MaxDataNum<=NUM) { tv_lv_foot.setVisibility(View.GONE); for(int i=0;i<MaxDataNum;i++) { mLists.add(mImageView_Icons[i]); } }else { for(int i=0;i<NUM;i++) { mLists.add(mImageView_Icons[i]); } } mCar_Names=getResources().getStringArray(R.array.france_car_names); mCar_Contents=getResources().getStringArray(R.array.france_car_contents); mListSignAdapter=new ListSignAdapter(this, mLists, mCar_Names); break; case 5: //日本 mImageView_Icons=new Integer[]{R.drawable.japan_1,R.drawable.japan_2, R.drawable.japan_3,R.drawable.japan_4,R.drawable.japan_5, R.drawable.japan_6,R.drawable.japan_7,R.drawable.japan_8, R.drawable.japan_9,R.drawable.japan_10,R.drawable.japan_11}; mImageView_Icons=new Integer[]{R.drawable.uk_1,R.drawable.uk_2, R.drawable.uk_3,R.drawable.uk_4,R.drawable.uk_5,R.drawable.uk_6}; mLists=new ArrayList<Integer>(); length=mImageView_Icons.length; MaxDataNum=length; //进行判断初始化的条数 if(MaxDataNum<=NUM) { tv_lv_foot.setVisibility(View.GONE); for(int i=0;i<MaxDataNum;i++) { mLists.add(mImageView_Icons[i]); } }else { for(int i=0;i<NUM;i++) { mLists.add(mImageView_Icons[i]); } } mCar_Names=getResources().getStringArray(R.array.japan_car_names); mCar_Contents=getResources().getStringArray(R.array.japan_car_contents); mListSignAdapter=new ListSignAdapter(this, mLists, mCar_Names); break; case 6: //韩国 mImageView_Icons=new Integer[]{R.drawable.korea_1,R.drawable.korea_2,R.drawable.korea_3}; mImageView_Icons=new Integer[]{R.drawable.uk_1,R.drawable.uk_2, R.drawable.uk_3,R.drawable.uk_4,R.drawable.uk_5,R.drawable.uk_6}; mLists=new ArrayList<Integer>(); length=mImageView_Icons.length; MaxDataNum=length; //进行判断初始化的条数 if(MaxDataNum<=NUM) { tv_lv_foot.setVisibility(View.GONE); for(int i=0;i<MaxDataNum;i++) { mLists.add(mImageView_Icons[i]); } }else { for(int i=0;i<NUM;i++) { mLists.add(mImageView_Icons[i]); } } mCar_Names=getResources().getStringArray(R.array.korea_car_names); mCar_Contents=getResources().getStringArray(R.array.korea_car_contents); mListSignAdapter=new ListSignAdapter(this, mLists, mCar_Names); break; case 7: //意大利 mImageView_Icons=new Integer[]{R.drawable.italy_1,R.drawable.italy_2, R.drawable.italy_3,R.drawable.italy_4,R.drawable.italy_5, R.drawable.italy_6}; mImageView_Icons=new Integer[]{R.drawable.uk_1,R.drawable.uk_2, R.drawable.uk_3,R.drawable.uk_4,R.drawable.uk_5,R.drawable.uk_6}; mLists=new ArrayList<Integer>(); length=mImageView_Icons.length; MaxDataNum=length; //进行判断初始化的条数 if(MaxDataNum<=NUM) { tv_lv_foot.setVisibility(View.GONE); for(int i=0;i<MaxDataNum;i++) { mLists.add(mImageView_Icons[i]); } }else { for(int i=0;i<NUM;i++) { mLists.add(mImageView_Icons[i]); } } mCar_Names=getResources().getStringArray(R.array.italy_car_names); mCar_Contents=getResources().getStringArray(R.array.italy_car_contents); mListSignAdapter=new ListSignAdapter(this, mLists, mCar_Names); break; case 8: //其他 mImageView_Icons=new Integer[]{R.drawable.other_1,R.drawable.other_2, R.drawable.other_3,R.drawable.other_4,R.drawable.other_5, R.drawable.other_6}; mImageView_Icons=new Integer[]{R.drawable.uk_1,R.drawable.uk_2, R.drawable.uk_3,R.drawable.uk_4,R.drawable.uk_5,R.drawable.uk_6}; mLists=new ArrayList<Integer>(); length=mImageView_Icons.length; MaxDataNum=length; //进行判断初始化的条数 if(MaxDataNum<=NUM) { tv_lv_foot.setVisibility(View.GONE); for(int i=0;i<MaxDataNum;i++) { mLists.add(mImageView_Icons[i]); } }else { for(int i=0;i<NUM;i++) { mLists.add(mImageView_Icons[i]); } } mCar_Names=getResources().getStringArray(R.array.other_car_names); mCar_Contents=getResources().getStringArray(R.array.other_car_contents); mListSignAdapter=new ListSignAdapter(this, mLists, mCar_Names); break; } } /** * 绑定数据 */ private void bindData() { tv_title_head.setText(mCar_Country[list_item]); lv_list_sign.setAdapter(mListSignAdapter); } /** * 初始化监听器 */ private void initListener() { btn_head_back.setOnClickListener(new MySetOnClickListener()); tv_lv_foot.setOnClickListener(new MySetOnClickListener()); lv_list_sign.setOnItemClickListener(new MySetOnItemClickListener()); // 进行滚动的时候进行实时记载显示图片,防止出现卡顿现象 lv_list_sign.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if(scrollState==OnScrollListener.SCROLL_STATE_IDLE) { int itemsLastIndex = mListSignAdapter.getCount() - 1; //数据集最后一项的索引 int lastIndex = itemsLastIndex + 1; //加上底部的loadMoreView项 } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { visibleLastIndex = firstVisibleItem + visibleItemCount - 1; } }); } // 按钮自定义监听器 class MySetOnClickListener implements OnClickListener { @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_head_back: // 返回键 mIntent=new Intent(ListSignActivity.this,MainActivity.class); ListSignActivity.this.startActivity(mIntent); ListSignActivity.this.finish(); break; case R.id.tv_lv_foot: // 点击加载更多数据 loadMore(); break; } } } // 列表点击自定义监听器 class MySetOnItemClickListener implements OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent _Intent=new Intent(ListSignActivity.this, DetailsSignActivity.class); _Intent.putExtra("img_id", mImageView_Icons[position]); _Intent.putExtra("car_name", mCar_Names[position]); _Intent.putExtra("car_content", mCar_Contents[position]); ListSignActivity.this.startActivity(_Intent); ListSignActivity.this.finish(); } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode==KeyEvent.KEYCODE_BACK) { mIntent=new Intent(ListSignActivity.this,MainActivity.class); ListSignActivity.this.startActivity(mIntent); ListSignActivity.this.finish(); } return super.onKeyDown(keyCode, event); } /** * 加载更多数据 */ private void loadMore() { //progress_lv_foot.setVisibility(View.VISIBLE); tv_lv_foot.setText(getResources().getString(R.string.string_tv_lv_foot_load)); mHandler.postDelayed(new Runnable() { @Override public void run() { loadData(); //progress_lv_foot.setVisibility(View.GONE); if(mListSignAdapter.getCount()==MaxDataNum) { lv_list_sign.removeFooterView(lv_foot); } tv_lv_foot.setText(ListSignActivity.this.getResources().getString(R.string.string_tv_lv_foot)); mListSignAdapter.notifyDataSetChanged();//刷新数据 } }, 1500); } /** * 加载数据 */ private void loadData() { int count=mListSignAdapter.getCount(); // 每次加载8条 if(count+8<MaxDataNum) { for(int i=count;i<count+8;i++) { mListSignAdapter.addItem(mImageView_Icons[i]); } }else { //数据已经不足8条 for(int i=count;i<MaxDataNum;i++) { mListSignAdapter.addItem(mImageView_Icons[i]); } } } }