1.添加不同類型條目 2.常駐懸浮框使用 3.activity_app_manager.xml ...
1.添加不同類型條目
1 class MyAdapter extends BaseAdapter{ 2 3 //獲取數據適配器中條目類型的總數,修改成兩種(純文本,圖片+文字) 4 @Override 5 public int getViewTypeCount() { 6 return super.getViewTypeCount()+1; 7 } 8 9 //指定索引指向的條目類型,條目類型狀態碼指定(0(復用系統),1) 10 @Override 11 public int getItemViewType(int position) { 12 if(position == 0 || position == mCustomerList.size()+1){ 13 //返回0,代表純文本條目的狀態碼 14 return 0; 15 }else{ 16 //返回1,代表圖片+文本條目狀態碼 17 return 1; 18 } 19 } 20 21 //listView中添加兩個描述條目 22 @Override 23 public int getCount() { 24 return mCustomerList.size()+mSystemList.size()+2; 25 } 26 27 @Override 28 public AppInfo getItem(int position) { 29 if(position == 0 || position == mCustomerList.size()+1){ 30 return null; 31 }else{ 32 if(position<mCustomerList.size()+1){ 33 return mCustomerList.get(position-1); 34 }else{ 35 //返回系統應用對應條目的對象 36 return mSystemList.get(position - mCustomerList.size()-2); 37 } 38 } 39 } 40 41 @Override 42 public long getItemId(int position) { 43 return position; 44 } 45 46 @Override 47 public View getView(int position, View convertView, ViewGroup parent) { 48 int type = getItemViewType(position); 49 50 if(type == 0){ 51 //展示灰色純文本條目 52 ViewTitleHolder holder = null; 53 if(convertView == null){ 54 convertView = View.inflate(getApplicationContext(), R.layout.listview_app_item_title, null); 55 holder = new ViewTitleHolder(); 56 holder.tv_title = (TextView)convertView.findViewById(R.id.tv_title); 57 convertView.setTag(holder); 58 }else{ 59 holder = (ViewTitleHolder) convertView.getTag(); 60 } 61 if(position == 0){ 62 holder.tv_title.setText("用戶應用("+mCustomerList.size()+")"); 63 }else{ 64 holder.tv_title.setText("系統應用("+mSystemList.size()+")"); 65 } 66 return convertView; 67 }else{ 68 //展示圖片+文字條目 69 ViewHolder holder = null; 70 if(convertView == null){ 71 convertView = View.inflate(getApplicationContext(), R.layout.listview_app_item, null); 72 holder = new ViewHolder(); 73 holder.iv_icon = (ImageView)convertView.findViewById(R.id.iv_icon); 74 holder.tv_name = (TextView)convertView.findViewById(R.id.tv_name); 75 holder.tv_path = (TextView) convertView.findViewById(R.id.tv_path); 76 convertView.setTag(holder); 77 }else{ 78 holder = (ViewHolder) convertView.getTag(); 79 } 80 holder.iv_icon.setBackgroundDrawable(getItem(position).icon); 81 holder.tv_name.setText(getItem(position).name); 82 if(getItem(position).isSdCard){ 83 holder.tv_path.setText("sd卡應用"); 84 }else{ 85 holder.tv_path.setText("手機應用"); 86 } 87 return convertView; 88 } 89 } 90 }
2.常駐懸浮框使用
lv_app_list.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { //滾動過程中調用方法 //AbsListView中view就是listView對象 //firstVisibleItem第一個可見條目索引值 //visibleItemCount當前一個屏幕的可見條目數 //總共條目總數 if(mCustomerList!=null && mSystemList!=null){ if(firstVisibleItem>=mCustomerList.size()+1){ //滾動到了系統條目 tv_des.setText("系統應用("+mSystemList.size()+")"); }else{ //滾動到了用戶應用條目 tv_des.setText("用戶應用("+mCustomerList.size()+")"); } } } });
3.activity_app_manager.xml
<FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <ListView android:id="@+id/lv_app_list" android:layout_width="match_parent" android:layout_height="wrap_content"> </ListView> <TextView android:background="#ccc" android:id="@+id/tv_des" android:textColor="#000" android:textSize="18sp" android:layout_width="match_parent" android:layout_height="wrap_content"/> </FrameLayout>