雨落love

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  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;
            }
        });
    }  
}

  效果图

    

 

     这就是微信界面了。

    

    

posted on 2016-11-25 23:33  雨落love  阅读(2448)  评论(0编辑  收藏  举报