• Android-listview控件


    1:首先先创建一个listview的视图文件。listview.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        
        <!--
        	在android开发中ListView是比较常用的组件,
        	它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。
          -->
        
        <ListView
               android:id="@+id/listView1"
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:layout_margin="5dp" 
               android:divider="#dddddd"
               android:dividerHeight="1dp">
        </ListView>
    
    </LinearLayout>
    

      

    2:定义一个显示界面的视图文件。item.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
        <ImageView
            android:id="@+id/pic"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="5dp"
            android:src="@drawable/xms" 
            android:layout_marginBottom="5dp"/>
    
        <TextView
            android:id="@+id/text1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_toRightOf="@+id/pic"
            
            android:textSize="16sp"
            android:textColor="#333"
            android:layout_marginTop="10dp"/>
    
        <TextView
            android:id="@+id/text2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/text1"
            android:layout_below="@+id/text1"
             
            android:textColor="#666"
            android:textSize="14sp"/>
    
        <TextView
            android:id="@+id/text3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/text2"
            android:layout_alignParentRight="true"
             
            android:textColor="#666"
            android:textSize="12sp"
            android:layout_marginRight="5dp"/>
    
    </RelativeLayout>
    

     

    3:源文件中编写代码:第一种方式(SimpleAdapter适配器)

    package com.huanglinbin.weixintext;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.ListView;
    import android.widget.RadioGroup;
    import android.widget.SimpleAdapter;
    
    public class MainActivity extends Activity {
    	//私有化Listview的控件。
    	private ListView listView;
    	//私有化ListView的适配器。
    	private SimpleAdapter simpleAdapter;
    	//私有化list集合。
    	private List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
    	//私有化radiogub的控件。
    	private RadioGroup radioGroup;
    	
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            //先要找到那两个控件。
            listView = (ListView) findViewById(R.id.listView1);
            radioGroup = (RadioGroup) findViewById(R.id.radioGroup1);
            
            //把数据源赋值到集合里面。
            list = getDate();
            //定义一个适配器
            simpleAdapter = new SimpleAdapter(
    	        		this,//上下问对象。
    	        		list, //数据源(也就是从数据库里面取出来的数据存放到这来,之后就循环输出出来)
    	        		R.layout.item,//页面输出的模板。
    	        		new String[]{"pic","text1","text2","text3"}, //这个相当于实体类中的属性,把这些属性存放到数组里面。
    	        		new int[]{R.id.pic,R.id.text1,R.id.text2,R.id.text3} //这个相对于句柄,通过句柄来找到模板中的数据源。
            		);
            //把这个适配器加入到listview的控件中去。
            listView.setAdapter(simpleAdapter);
           
        }
    
        
      //定义数据源。
        private List<Map<String,Object>> getDate(){
        	//定义一个循环,把数据循环输出出来。
        	for(int i=0;i<5;i++){
        		//定义一个map集合,把集合加入到map的集合里面。
        		Map<String,Object> map = new HashMap<String, Object>();
        		map.put("pic",R.drawable.xms);
        		map.put("text1", "小魔神");
        		map.put("text2", "Android一班老师");
        		map.put("text3", "昨天");
        		//把map集合加到list集合里面去。
        		list.add(map);
        	}
        	
        	return list;
        }
        
        
       
    }
    

      

    第二种方式:(BaseAdapter适配器)

    //简单理解为VC绑在一起
            
            baseAdapter,店长推荐 5星级
            lv.setAdapter( new BaseAdapter(){
    
            	//返回多少条记录
    			@Override
    			public int getCount() {
    				// TODO Auto-generated method stub
    				return messageList.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 inflater = MainActivity.this.getLayoutInflater();
    					//因为getView()返回的对象,adapter会自动赋给ListView
    					view = inflater.inflate(R.layout.listview_item_layout, null);
    				}else{
    					Log.i("info:", "有缓存,不需要重新生成"+position);
    					view = convertView;
    				}
    				Message m = messageList.get(position);
    				
    				TextView tv_userName = (TextView)view.findViewById(R.id.tv_userName);
    				tv_userName.setText(  m.getUserName()  );
    				tv_userName.setTextSize(15);
    				
    				TextView tv_lastMessage = (TextView)view.findViewById(R.id.tv_lastMessage);
    				tv_lastMessage.setText(  m.getLastMessage()  );
    				tv_lastMessage.setTextSize(12);
    				
    				TextView tv_datetime = (TextView)view.findViewById(R.id.tv_datetime);
    				tv_datetime.setText( m.getDatetime()  );
    				tv_datetime.setTextSize(12);
    
    				return view;
    			}
    			
    			@Override
    			public Object getItem(int position) {
    				// TODO Auto-generated method stub
    				return null;
    			}
    
    			@Override
    			public long getItemId(int position) {
    				// TODO Auto-generated method stub
    				return 0;
    			}
    
    			
            	
            } );
    

      

  • 相关阅读:
    获取程序Appdelegate中无需释放的特定控制器,非新建-------IOS
    IOS传值---属性传值、代理委托传值(delegate)传值、单例传值、block传值
    Tableview最后一行无法显示或者显示不全的问题IOS
    IOS中的懒加载lazyLoad
    IOS中NSUserDefaults的用法(轻量级本地数据存储)
    NSNotification与NSNotificationCenter
    洛谷2756 飞行员配对方案问题
    bzoj4551 [HEOI2016]树
    洛谷2114 bzoj3668[NOI2014]起床困难综合症
    洛谷1345 [Usaco5.4]奶牛的电信
  • 原文地址:https://www.cnblogs.com/huanglinbin/p/6109363.html
Copyright © 2020-2023  润新知