zoukankan      html  css  js  c++  java
  • 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;
                }
            });
        }  
    }

      效果图

        

         这就是微信界面了。

        

        

  • 相关阅读:
    iOS 微信分享提示 未验证应用
    iOS 升级xcode12后原项目模拟器运行报错
    ZK进程监控
    kakafka
    mysql 通过使用联全索引优化Group by查询
    4. php反序列化从入门到放弃(放弃篇)
    微慕小程序专业版V3.5发布-小商店
    C++ Singleton模式
    C语言的clone与mmap调用
    InnoDB MVCC机制
  • 原文地址:https://www.cnblogs.com/yuluo123/p/6103330.html
Copyright © 2011-2022 走看看