Android 不同类型item的listview

Android 经常有很多时候会有不同类型的item的listview需求,下面类似于像聊天对话框的界面adapter。

public class AdviceAdapter extends BaseAdapter {
    private final static String THIS_FILE = "AdviceAdapter";
    private final static int TYPE_SERVICE = 1;
    private final static int TYPE_USER = 0;
    private final static int TYPE_COUNT = 2;
    private Context mContext;
    private List<adviceinfo.AdviceInfo> mList;
    protected Fragment mFragment;
    private adviceinfo.AdviceInfo info;
    public AdviceAdapter(Activity mContext, List<adviceinfo.AdviceInfo> list) {
        this.mContext = mContext;
        this.mList = list;
    }

    @Override
    public int getCount() {
        return mList.size();
    }

    @Override
    public Object getItem(int position) {
        return mList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    public void addList(List<adviceinfo.AdviceInfo> list){
        mList.addAll(list);
        notifyDataSetChanged();
    }
    public void clearList(){
        mList.clear();
        notifyDataSetChanged();
    }

    @Override
    public int getViewTypeCount() {
        return TYPE_COUNT;
    }

    @Override
    public int getItemViewType(int position) {
        //type一定要从0开始,否则会报数组越界异常
        if ("1".equals(mList.get(position).getContSide())) {
            return TYPE_USER;// 用户
        }else{
            return TYPE_SERVICE;// 客服
        }
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder1 = null;
        ViewHolder holder2 = null;
        int currentType;
        info = mList.get(position);
        currentType = getItemViewType(position)+1;
        if (convertView == null) {
            if(currentType == 2) {
                holder2 = new ViewHolder();
                LayoutInflater mInflater = LayoutInflater.from(mContext);
                convertView = mInflater.inflate(R.layout.item_advice_service, null);
                holder2.content = (TextView) convertView.findViewById(R.id.ask_content_service);
                holder2.time = (TextView) convertView.findViewById(R.id.tv_advice_item_time_service);
                convertView.setTag(R.id.tag_second,holder2);
            }else {
                holder1 = new ViewHolder();
                LayoutInflater mInflater1 = LayoutInflater.from(mContext);
                convertView = mInflater1.inflate(R.layout.item_advice_user, null);
                holder1.time = (TextView) convertView.findViewById(R.id.tv_advice_item_time_user);
                holder1.content = (TextView) convertView.findViewById(R.id.ask_content_user);
                convertView.setTag(R.id.tag_first,holder1);
            }

        }else{
            if(currentType == 2) {
                holder2 = (ViewHolder) convertView.getTag(R.id.tag_second);
            }else {
                holder1 = (ViewHolder) convertView.getTag(R.id.tag_first);
            }
        }
        if(currentType == 2) {
            if(info.getFeedBackCont() != null )
                holder2.content.setText(info.getFeedBackCont());
            else
                holder2.content.setText("");
            if(DateTimeUtils.getLockUnLockTime(info.getCreateDate()) !=null )
                holder2.time.setText(DateTimeUtils.getLockUnLockTime(info.getCreateDate()));
            else
                holder2.time.setText("");
        }else{
            if(info.getFeedBackCont() != null )
                holder1.content.setText(info.getFeedBackCont());
            else
                holder1.content.setText("");
            if(DateTimeUtils.getLockUnLockTime(info.getCreateDate()) !=null )
                holder1.time.setText(DateTimeUtils.getLockUnLockTime(info.getCreateDate()));
            else
                holder1.time.setText("");
        }

        return convertView;
    }
    private static class ViewHolder {
        TextView content;
        TextView time;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值