android - 使用listview加载不同item,数据填充错误。

 kyle_G_476 发布于 2022-10-30 14:01

当日期的值为空的时候,就会将姓名或邮箱等值填充进去,当日期有值的时候现实正常,找了好久不知道怎么搞,希望各位大神给点建议。

下面为adapter的代码:

private static final int TYPE_VIEW_COUNT = 2;
private static final int TYPE_ONE = 0;
private static final int TYPE_TWO = 1;

private List mDatas;
private Context mContext;
private LayoutInflater mInflater;

private int eventIds = -1;
private int attendIds = -1;
private int ticketIds = -1;
private Attends attends;
private EventTicket ticket;
private JSONObject object = null;

public DetailAdapter(List mDatas, Context mContext, int eventId, int attendId, int ticketId) {
    this.mDatas = mDatas;
    this.mContext = mContext;
    this.mInflater = LayoutInflater.from(mContext);
    this.eventIds = eventId;
    this.attendIds = attendId;
    this.ticketIds = ticketId;
    
    attends = new Select().from(Attends.class).where(Attends_Table.eventId.is(eventIds)).and(Attends_Table.attendId.is(attendIds)).querySingle();
    ticket = new Select().from(EventTicket.class).where(EventTicket_Table.eventIds.is(eventIds)).and(Attends_Table.ticketIds.is(ticketIds)).querySingle();

    try {
        object = new JSONObject(attends.gsonUser);
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

@Override
public int getItemViewType(int position) {
    if (position == 0) {
        return TYPE_ONE;
    } else {
        return TYPE_TWO;
    }
}

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

@Override
public int getCount() {
    return mDatas.size() + 1;
}

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

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    DetailViewHolder holder = null;
    UserDetailViewHolder userDetailViewHolder = null;
    int viewTypeCount = getItemViewType(position);
    if (convertView == null) {
        switch (viewTypeCount) {
            case TYPE_ONE:
                userDetailViewHolder = new UserDetailViewHolder();
                convertView = mInflater.inflate(R.layout.attend_people_datail_type1, null);
                userDetailViewHolder.tv_name_letter = (CircleTextView) convertView.findViewById(R.id.tv_detail_letter);
                userDetailViewHolder.tv_detail_name = (TextView) convertView.findViewById(R.id.tv_detail_name);
                userDetailViewHolder.tv_ticket_name = (TextView) convertView.findViewById(R.id.tv_detail_ticket);
                convertView.setTag(userDetailViewHolder);
             //   AutoUtils.auto(convertView);
                break;
            case TYPE_TWO:
                holder = new DetailViewHolder();
                convertView = mInflater.inflate(R.layout.attend_people_datail_type2, null);
                holder.tv_form = (TextView) convertView.findViewById(R.id.tv_form);
                holder.tv_detail_content = (TextView) convertView.findViewById(R.id.tv_detail_content);
                convertView.setTag(holder);
        }
    } else {
        switch (viewTypeCount) {
            case TYPE_ONE:
                userDetailViewHolder = (UserDetailViewHolder) convertView.getTag();
                break;
            case TYPE_TWO:
                holder = (DetailViewHolder) convertView.getTag();
                break;
        }
    }
    //根据返回类型展示不同的数据
    switch (viewTypeCount) {

        case TYPE_ONE:
            if (attends != null && ticket != null) {
                userDetailViewHolder.tv_name_letter.setText(attends.names.substring(0, 1));
                userDetailViewHolder.tv_detail_name.setText(attends.names);
                userDetailViewHolder.tv_ticket_name.setText(ticket.ticketNames);
            }
            break;
        case TYPE_TWO:
            if (position >= 1) {
                Log.e("", "position -->" + position);
                if (attends != null) {
                    holder.tv_form.setText(mDatas.get(position - 1).getFormName());
                    try {
                        if (object != null) {
                            holder.tv_detail_content.setText(object.getString(mDatas.get(position - 1).getFormFieldId() + ""));
                        }
                        //  Toast.makeText(mContext, holder.tv_form.getText().toString(), Toast.LENGTH_LONG).show();
                      //  Toast.makeText(mContext, holder.tv_detail_content.getText().toString(), Toast.LENGTH_LONG).show();
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }
            break;
    }

    return convertView;
}

class DetailViewHolder {
    TextView tv_form;
    TextView tv_detail_content;
}

class UserDetailViewHolder {
    CircleTextView tv_name_letter;
    TextView tv_detail_name;
    TextView tv_ticket_name;
}

}

1 个回答
  • @Override
    public int getCount() {

    return mDatas.size() + 1;

    }
    不需要加一吧

    2022-10-31 21:37 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有