ListView聊天

来源:互联网 发布:mysql 函数 跳出循环 编辑:程序博客网 时间:2024/04/28 01:31

ListView提供了二个方法:

getItemViewType:用来返回第postion个Item是什么类型
getViewTypeCount:返回不同布局的总数。

知道了这二个方法后,我们先来看一看效果图:

下面贴一下代码:
in.xml:

out.xml代码差不多,这里不贴了。

下面是Adapter适配器

public class ChatItemListViewAdapter extends BaseAdapter {    List<Bean> mList = new ArrayList<>();    private final LayoutInflater mInflater;    public ChatItemListViewAdapter(Context context, List<Bean> mList) {        this.mList = mList;        mInflater = LayoutInflater.from(context);    }    @Override    public int getCount() {        return mList.size();    }    @Override    public Object getItem(int i) {        return null;    }    @Override    public long getItemId(int i) {        return i;    }    @Override    public View getView(int i, View convertView, ViewGroup viewGroup) {        ViewHolder holder = null;        if (convertView == null) {            if (getItemViewType(i) == 0) {                holder = new ViewHolder();                convertView = mInflater.inflate(R.layout.in, null);                holder.icon = (ImageView) convertView.findViewById(R.id.imageView);                holder.text = (TextView) convertView.findViewById(R.id.textview);            } else {                holder = new ViewHolder();                convertView = mInflater.inflate(R.layout.out, null);                holder.icon = (ImageView) convertView.findViewById(R.id.image_out);                holder.text = (TextView) convertView.findViewById(R.id.text_out);            }            convertView.setTag(holder);        } else {            holder = (ViewHolder) convertView.getTag();        }        holder.icon.setImageBitmap(mList.get(i).getIcon());        holder.text.setText(mList.get(i).getText());        return convertView;    }    @Override    public int getItemViewType(int position) {        Bean bean = mList.get(position);        return bean.getType();    }    @Override    public int getViewTypeCount() {        return 2;    }    public final class ViewHolder {        public ImageView icon;        public TextView text;    }}

为了更好的封装聊天内容,这里使用javaBean

public class Bean {    private  int type;    private  String text;    private Bitmap icon;    public int getType() {        return type;    }    public void setType(int type) {        this.type = type;    }    public String getText() {        return text;    }    public void setText(String text) {        this.text = text;    }    public Bitmap getIcon() {        return icon;    }    public void setIcon(Bitmap icon) {        this.icon = icon;    }}

MainActivity.java代码:

public class MainActivity extends Activity {    private ListView mListView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mListView = (ListView) findViewById(R.id.listview);        Bean bean1 =  new Bean();        bean1.setType(0);        bean1.setIcon(BitmapFactory.decodeResource(getResources(),R.drawable.whitedog));        bean1.setText("Hello!");        Bean bean2 =  new Bean();        bean2.setType(1);        bean2.setIcon(BitmapFactory.decodeResource(getResources(),R.drawable.cat4));        bean2.setText("Hello!");        Bean bean3 =  new Bean();        bean3.setType(0);        bean3.setIcon(BitmapFactory.decodeResource(getResources(),R.drawable.whitedog));        bean3.setText("How old are you?");        Bean bean4 =  new Bean();        bean4.setType(1);        bean4.setIcon(BitmapFactory.decodeResource(getResources(),R.drawable.cat4));        bean4.setText("Twenty,and you?");        Bean bean5 =  new Bean();        bean5.setType(0);        bean5.setIcon(BitmapFactory.decodeResource(getResources(),R.drawable.whitedog));        bean5.setText("Oh! Me too!Hahahaha");        List<Bean> data = new ArrayList<>();        data.add(bean1);        data.add(bean2);        data.add(bean3);        data.add(bean4);        data.add(bean5);        mListView.setAdapter(new ChatItemListViewAdapter(MainActivity.this,data));    }}

好了,代码演示完了,并不是很复杂。

1 0
原创粉丝点击