Android|第67篇 Android Studio实现聊天记录界面-ListView多形式界面

【Android|第67篇 Android Studio实现聊天记录界面-ListView多形式界面】
第67篇 Android Studio实现聊天记录界面-ListView多形式界面

  • 1.需求
  • 2.文件目录
  • 3.主界面布局
  • 4.左边信息界面布局
  • 5.右边信息界面布局
  • 6.数据类Data
  • 7.MyAdapter类
  • 8.主活动类
  • 9.效果
  • 10.代码
    • 10.1.主界面
    • 10.2.左边布局
    • 10.3.右边布局
    • 10.4.Data类
    • 10.5.MyAdapter类
    • 10.6.活动类

1.需求 Android|第67篇 Android Studio实现聊天记录界面-ListView多形式界面
文章图片

这是QQ的聊天界面
这呢其实用ListView多形式界面就可以实现,可以看出:
一个是图片在左边,文字在右边,
而另一个是图片在右边,文字在左边,
而且文字和图片是紧挨着的
如此我们只需改变图片和文本的位置即可。
先看看文件目录:
2.文件目录 Android|第67篇 Android Studio实现聊天记录界面-ListView多形式界面
文章图片

实现ListView那基本就需要数据类和适配器类,再加一个活动类就可以了,复杂的工程就得往里面加很多东西。
然后添加两张图片,即两个头像
再者是三个布局:
主布局只有一个ListView
左信息界面是一个图形一个文本
右信息界面也是一个图形一个文本
ok,下面逐一说明:
其实适配器昨天已经说过了,下面只说改变的地方。
3.主界面布局 Android|第67篇 Android Studio实现聊天记录界面-ListView多形式界面
文章图片

还是昨天的代码,一点没变,你可以按照自己的需要修改。
4.左边信息界面布局 Android|第67篇 Android Studio实现聊天记录界面-ListView多形式界面
文章图片

就做了点点修改。
5.右边信息界面布局 Android|第67篇 Android Studio实现聊天记录界面-ListView多形式界面
文章图片

把左边布局的控件位置变换,然后让文本内容靠右显示。
6.数据类Data Android|第67篇 Android Studio实现聊天记录界面-ListView多形式界面
文章图片

剩下的是get和set函数,一键生成即可
7.MyAdapter类 Android|第67篇 Android Studio实现聊天记录界面-ListView多形式界面
文章图片

其他的都是昨天的代码,一点没变,这里我们先判断当前行的类型,看是左边还是右边,是右边就给右边界面的布局,是左边就给左边的布局。
8.主活动类 Android|第67篇 Android Studio实现聊天记录界面-ListView多形式界面
文章图片

在数据初始化的时候每隔一个显示不同类型。
9.效果 Android|第67篇 Android Studio实现聊天记录界面-ListView多形式界面
文章图片

还可以吧,如果你先显示图片啊,视频啊什么的,都可以自己修改布局和实现代码,都ok拉。
10.代码 10.1.主界面

10.2.左边布局

10.3.右边布局

10.4.Data类
package com.example.listviewadapter; public class Data { private int imageId; private String text; private int type; public Data() { }public Data(int imageId, String text, int type) { this.imageId = imageId; this.text = text; this.type = type; }public int getImageId() { return imageId; }public void setImageId(int imageId) { this.imageId = imageId; }public String getText() { return text; }public void setText(String text) { this.text = text; }public int getType() { return type; }public void setType(int type) { this.type = type; } }

10.5.MyAdapter类
package com.example.listviewadapter; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import java.util.LinkedList; public class MyAdapter extends BaseAdapter {private Context mContext; private LinkedList myData; public MyAdapter() {}public MyAdapter(LinkedList myData, Context mContext) { this.myData = https://www.it610.com/article/myData; this.mContext = mContext; }@Override public int getCount() { return myData.size(); }@Override public Object getItem(int position) { return myData.get(position); }@Override public long getItemId(int position) { return position; }@Override public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; TextView textView; if(myData.get(position).getType() == 0){ convertView = LayoutInflater.from(mContext). inflate(R.layout.left_information_layout,parent,false); imageView = convertView.findViewById(R.id.image_left); textView = convertView.findViewById(R.id.txt_left); } else { convertView = LayoutInflater.from(mContext). inflate(R.layout.right_information_layout,parent,false); imageView = convertView.findViewById(R.id.image_right); textView = convertView.findViewById(R.id.txt_right); } imageView.setImageResource(myData.get(position).getImageId()); textView.setText(myData.get(position).getText()); return convertView; }}

10.6.活动类
package com.example.listviewadapter; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.ListView; import java.util.LinkedList; public class MainActivity extends AppCompatActivity {@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); LinkedList myData = https://www.it610.com/article/new LinkedList<>(); for(int i = 0; i < 50; i++){ if(i % 2 == 0){ myData.add(new Data(R.drawable.left_image,"在吗",0)); } else{ myData.add(new Data(R.drawable.right_image,"在",1)); } }ListView listView = findViewById(R.id.listView_information); listView.setAdapter(new MyAdapter(myData,this)); } }

完结

    推荐阅读