Android之ListView展示多类型的条目

    xiaoxiao2025-03-31  9

    以前只写过单一类型的条目,今天学习了一下多类型条目的展示,为避免遗忘,为此在这里记录,写的解释都在代码里面,欢迎其他学习者学习参考:

    private class MyAdapter extends BaseAdapter{ //获取数据设配器中条目类型的总数 @Override public int getViewTypeCount() { return super.getViewTypeCount()+1;//种类有两种 } //指定索引指向的条目的类型(0代表复用系统) @Override public int getItemViewType(int position) { if(position == 0 || position == mUserAppList.size() + 1){ //0代表纯文本条目 return 0; }else{ //1代表文本条目+图片 return 1; } } @Override public int getCount() { return mUserAppList.size()+mSystemAppList.size()+2;//加了用户和系统条目,故加2 } @Override public AppInfo getItem(int position) { if(position < mUserAppList.size()){ return mUserAppList.get(position); } return mSystemAppList.get(position-mUserAppList.size()); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { int type = getItemViewType(position); if(type == 0){ //展示灰色条目 TextViewHolder viewHolder; if(convertView == null){ viewHolder = new TextViewHolder(); convertView = View.inflate(getApplicationContext(), R.layout.app_list_item_title, null); viewHolder.title = (TextView) convertView.findViewById(R.id.tv_app_list_title); convertView.setTag(viewHolder); }else{ viewHolder = (TextViewHolder) convertView.getTag(); } if(position == 0){ viewHolder.title.setText("用户应用("+mUserAppList.size()+")"); }else{ viewHolder.title.setText("系统应用("+mSystemAppList.size()+")"); } return convertView; }else{ //正常条目 ViewHolder viewHolder; if(convertView == null){ viewHolder = new ViewHolder(); convertView = View.inflate(getApplicationContext(), R.layout.app_list_item, null); viewHolder.name = (TextView) convertView.findViewById(R.id.tv_app_name); viewHolder.isSdcard = (TextView) convertView.findViewById(R.id.tv_app_location); viewHolder.icon = (ImageView) convertView.findViewById(R.id.iv_app_icon); convertView.setTag(viewHolder); }else{ viewHolder = (ViewHolder) convertView.getTag(); } if(getItem(position).name==null){ viewHolder.name.setText(getItem(position).packageName); }else{ viewHolder.name.setText(getItem(position).name); } if(getItem(position).isSdcard){ viewHolder.isSdcard.setText("sd卡应用"); }else{ viewHolder.isSdcard.setText("手机应用"); } viewHolder.icon.setImageDrawable(getItem(position).icon); return convertView; } } private class ViewHolder{ public TextView name; public TextView isSdcard; public ImageView icon; } private class TextViewHolder{ public TextView title; } }

    转载请注明原文地址: https://ju.6miu.com/read-1297573.html
    最新回复(0)