Android开发--微信布局(ListView)基本运用

  ListView    

    1.ListVeiw 用来展示列表的View。

    2.适配器 用来把数据映射到ListView上的中介。

    3.数据    具体的将被映射的字符串,图片,或者基本组件。

    根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter

    其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方面的把数据库的内容以列表的形式展示出来。

    接着上一篇的布局:显示列表仿照聊天,也是一样添加LinearLayout文件,添加ListView控件

      

      

 <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

  添加布局文件,显示图片和聊天记录

  

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <ImageView
        //显示图片
        android:id="@+id/imageView1"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="13dp"
        android:src="@drawable/lad" />
<LinearLayout
     android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:orientation="vertical"
    >

    <TextView
        //显示名字
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:textSize="15dp"
        android:textStyle="bold"
        android:layout_marginLeft="10dp"
        android:text="TextView" />

    <TextView
         //显示聊天信息
        android:id="@+id/mess"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="20dp"
         android:textSize="15dp"
        android:text="TextView" />

</LinearLayout>
 <TextView
      //时间
        android:id="@+id/date"
         android:layout_marginTop="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="13dp"
        android:text="TextView" />

</LinearLayout>

    接下来就是主要代码了,添加一个类,显示 

public class mess {
private String lad;
private String name;
private String messeng;
private String date;

    public String getLad() {
        return lad;
    }
    public void setLad(String lad) {
        this.lad = lad;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getMesseng() {
        return messeng;
    }
    public void setMesseng(String messeng) {
        this.messeng = messeng;
    }
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
}

    MainActivity类   

public class MainActivity extends Activity {
    private ListView lv;
    //集合
    private List<mess> messagetlist=new ArrayList<mess>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.wei);
        //循环读取数据,模仿数据库
        for (int i = 0; i <50; i++) {
            mess me=new mess();
            //添加数据
            me.setLad("喜欢");
            me.setName("胡");
            me.setMesseng("最近过的还好吗");
            me.setDate("2016-11-25");
            //添加到集合
            messagetlist.add(me);
        }
        //查找listView1对象
        lv=(ListView)findViewById(R.id.listView1);
        lv.setAdapter(new BaseAdapter() {
            @Override
            public int getCount() {

                return messagetlist.size();//集合的大小
            }
            //每一个item项,返回一次界面
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                View view=null;
                    //布局不变,数据变

                //如果缓存为空,我们生成新的布局作为1个item
                if(convertView==null)
                {
                    Log.i("info","没有缓存,重新生成"+position);
                    LayoutInflater ter=MainActivity.this.getLayoutInflater();
                    //因为getView()返回的对象,adapter会自动赋给ListView
                    view=ter.inflate(R.layout.img,null);
                }
                else
                {
                    Log.i("info","有缓存,不需要重新生成"+position);
                    view=convertView;
                }
                mess m=messagetlist.get(position);
                //读取数据
                TextView tv1=(TextView)view.findViewById(R.id.name);
                tv1.setText(m.getName() );
                tv1.setTextSize(15);
                TextView tv2=(TextView)view.findViewById(R.id.mess);
                tv2.setText(m.getMesseng());
                tv2.setTextSize(12);
                TextView tv3=(TextView)view.findViewById(R.id.date);
                tv3.setText(m.getDate());
                tv3.setTextSize(12);
                return view;

            }

            @Override
            public long getItemId(int arg0) {
                // TODO Auto-generated method stub
                return 0;
            }

            @Override
            public Object getItem(int arg0) {
                // TODO Auto-generated method stub
                return null;
            }
        });
    }
}

  效果图

    

     这就是微信界面了。

    

    

时间: 2024-10-03 14:44:50

Android开发--微信布局(ListView)基本运用的相关文章

C#程序员学习Android开发系列之ListView

上篇博客解决了Android客户端通过WebService与服务器端程序进行交互的问题,这篇博客重点关注两个问题,一个是Android应用程序如何与本机文件型数据库SQLite进行交互,另一问题则是如何在ListView中按照我们想要的界面效果进行展示.限于篇幅这篇重点讲ListView,下篇博客重点阐述SQLite. ListView是一个常用的数据显示控件,假设我们要做一个简单的界面,如图所示. 这张图是我直接从Android平板电脑(Android 4.2.2)上面截图下来的,就是一个普通

Android开发之适配器-ListView适配器的重复数据

适配器是Android中的数据与View视图的桥梁,作用就是将数据通过适配器显示到对应的View视图上. 工作中,在用ListView做适配器数据时候,有些人肯定碰见过,如何优化效率,但是又出现重复数据的情况,如何避免重复数据而且又能提高ListView大数据量时候的效率呢?,解决方案就是2点: 1. 在getView方法中 进行View的判断,即做convertView ==null 这样的判断,这样是为了提高数据量大的时候的效率. 2.设置数据用setTag()/getTag()方法来进行对

Android开发 UI布局

Android开发 UI布局一.线性布局LinearLayout 什么是线性布局? 其实呢,线性布局就是把所有的孩子摆在同一条线上 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_paren

Android开发系列之ListView

在Android开发中,我们最常接触的控件之一就是ListView,因为我们常常需要展示列表文本或者图片信息.但是因为ListView所展示的信息容量太大了,所以如果我们处理不当的话,那么就有可能会带来性能问题. 优化之一就是在Adapter里面采用ViewHolder进行视图缓存,避免了每次在调用getView()的时候都去通过findViewById()实例化控件.据测试,使用ViewHolder将提高50%以上的效率.具体的使用方法很多,读者可以自行进行查找. 优化之二直接利用属性设置分割

android 安卓 微信布局

微信布局 直接上代码吧 ---------------------------------------- 头部 ----------------------------------------------- 项目 /res/layout 目录下 创建 head.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.and

Android开发-动态布局小记

android动态布局相比静态布局,动态布局不用再将xml转变了布局代码,提高了一定的效率,当然可以忽略不记.动态布局主要是比较灵活,可以很快的在代码中直接修改布局,并直接使用控件进行业务逻辑开发.但代码量通常比较大,维护没有静态布局方便.不过,作为一个android开发人员,掌握一定的动态布局技巧,有时在工作中也是可以提高一定的代码开发效率.   在动态布局中,要想实现一个布局,一般是先创建五大布局的对象.然后对这些对象进行属性设置,之后再向里面添加子布局或控件. 以RelativeLayou

【麦子学院】Android开发教程自定义ListView背景

Android自定义ListView背景 Android ListView是Android开发中非常常用的一个控件,在做UI设计的时候,很多人希望能够改变它的背景来达到更好的视觉效果,改变它的背景其实很简单,我们只要准备一张图片然后指定属性android:background="@drawable/bg",不过不要高兴地太早,当你这么做以后,发现背景是改变了,但是当你拖动或者点击list空白位置的时候发现ListItem都变成黑色的了,如下图所示: 这是为什么呢? 这个要从Listvi

Android开发 --微信支付开发(转载!)(开发工具:Eclipse)

Android_APP 微信支付接口开发 日期:2015-10-06 12:47:33 作者: 来源: 人气:3549 1.首先说一下我们在开发微信支付接口的时候遇到最多和最疑惑的问题,那就是明明 appid.商户号.API密钥 都对照了好几遍确实是和自己的一样,并且也没有在Log日志中出现签名错误等信息,却始终调不起微信支付,或是直接回到支付结果后的界面并提示 “微信支付结果:null;code=-1”.这就是微信支付中的一个深坑之处(为什么说这是深坑之处呢?会在下面特别说明). 2.下面就教

Android开发之布局优化

1.抽象布局标签 (1) <include>标签 include标签经常使用于将布局中的公共部分提取出来供其它layout共用,以实现布局模块化.这在布局编写方便提供了大大的便利. 以下以在一个布局main.xml中用include引入还有一个布局foot.xml为例.main.mxl代码例如以下: Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?xml version="1.0" encoding="utf-8"?