图文混排

生活中我们使用的apk同一个页面很多的item项布局不一样 今天就说一下如何实现图文混排 实现图文混排的也就是我们的适配器 下面我们说一个例子 我们普通的聊天窗口中就是两种不同的item项 一个在左边 一个在右边 那么我们如何实现呢 下面我们就一起走进探索

import java.text.SimpleDateFormat;
import java.util.List;
import com.lcjl.activity.R;
import com.lcjl.bean.TalkBean;
import com.lcjl.bean.TalkBean.Type;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class TalkAdapter extends BaseAdapter{

    private LayoutInflater mInflater;
    private List<TalkBean> mDatas;

    public TalkAdapter(Context context,List<TalkBean> mDatas) {

        mInflater = LayoutInflater.from(context);
        this.mDatas = mDatas;
    }

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

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

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

    @Override
    public int getItemViewType(int position) {

        TalkBean chatMessage = mDatas.get(position);
        if(chatMessage.getType() == Type.INCOMING){
            return 0;
        }
        return 1;
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        TalkBean chatMessage = mDatas.get(position);
            ViewHolder vh = null;
            if(convertView == null){
                if(getItemViewType(position) == 0){
                    convertView = mInflater.inflate(R.layout.service_item, parent,false);
                    vh = new ViewHolder();
                    vh.mData = (TextView) convertView.findViewById(R.id.id_from_msg_date);
                    vh.mMsg = (TextView) convertView.findViewById(R.id.id_from_msg_info);
                }else{
                    convertView = mInflater.inflate(R.layout.custom_item, parent,false);
                    vh = new ViewHolder();
                    vh.mData = (TextView) convertView.findViewById(R.id.id_to_msg_date);
                    vh.mMsg = (TextView) convertView.findViewById(R.id.id_to_msg_info);
                }

                convertView.setTag(vh);

            }else{
                vh = (ViewHolder) convertView.getTag();
            }


            //设置数据
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            vh.mData.setText(df.format(chatMessage.getDate()));
            vh.mMsg.setText(chatMessage.getMessage());


        return convertView;
    }

    private final class ViewHolder{
        TextView mData;
        TextView mMsg;
    }
}

从上面的适配器代码中我们看到 我们的适配器中 不是只有getView getCount getItem getItemId 我们还能提供getItemViewType(); 这个方法是设定我们的item项的
getViewTypeCount() 是返回我们item项种类的个数

然后我们在下面判断加载不同的布局

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值