亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Android開發(fā)學(xué)習(xí)——ListView的使用

Original 2016-11-09 13:36:50 607
abstract:ListView就是用來顯示一行一行的條目的MVC結(jié)構(gòu) * M:model模型層,要顯示的數(shù)據(jù)           ————people集合 * V:view視圖層,用戶看到的界面        &n

ListView

就是用來顯示一行一行的條目的
MVC結(jié)構(gòu)
 * M:model模型層,要顯示的數(shù)據(jù)           ————people集合
 * V:view視圖層,用戶看到的界面          ————ListView
 * c:control控制層,操作數(shù)據(jù)如何顯示     ————adapter對象
每一個條目都是一個View對象
BaseAdapter
* 必須實(shí)現(xiàn)的兩個方法

 * 第一個

   //系統(tǒng)調(diào)用此方法,用來獲知模型層有多少條數(shù)據(jù)
   @Override
   public int getCount() {
    return people.size();
   }

 * 第二個

   //系統(tǒng)調(diào)用此方法,獲取要顯示至ListView的View對象
   //position:是return的View對象所對應(yīng)的數(shù)據(jù)在集合中的位置
   @Override
   public View getView(int position, View convertView, ViewGroup parent) {
    System.out.println("getView方法調(diào)用" + position);
    TextView tv = new TextView(MainActivity.this);
    //拿到集合中的元素
    Person p = people.get(position);
    tv.setText(p.toString());
    
    //把TextView的對象返回出去,它會變成ListView的條目
    return tv;
   }
屏幕上能顯示多少個條目,getView方法就會被調(diào)用多少次,屏幕向下滑動時,getView會繼續(xù)被調(diào)用,創(chuàng)建更多的View對象顯示至屏幕
條目的緩存
當(dāng)條目劃出屏幕時,系統(tǒng)會把該條目緩存至內(nèi)存,當(dāng)該條目再次進(jìn)入屏幕,系統(tǒng)在重新調(diào)用getView時會把緩存的條目作為convertView參數(shù)傳入,但是傳入的條目不一定是之前被緩存的該條目,即系統(tǒng)有可能在調(diào)用getView方法獲取第一個條目時,傳入任意一個條目的緩存

 

代碼如下:

activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    
    tools:context="com.example.list.MainActivity" >
    <ListView 
       android:id="@+id/lv"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"       
       ></ListView>
</LinearLayout>

item.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" >
    <ImageView
        android:id="@+id/iv"
        android:src="@drawable/xing"
        android:layout_width="80dp"
        android:layout_height="80dp" 
             
        />
    <TextView 
        android:id="@+id/t1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        
        />
    <TextView 
        android:id="@+id/t2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
             
        />
    
</LinearLayout>

MainActivity.java

public class MainActivity extends Activity {
    List<shopInfo> l;
    ListView lv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv = (ListView) findViewById(R.id.lv);
        //準(zhǔn)備集合數(shù)據(jù)
        l = new ArrayList<shopInfo>();
        l.add(new shopInfo(R.drawable.xing, "name-1", "content-1"));
        l.add(new shopInfo(R.drawable.xing, "name-2", "content-2"));
        l.add(new shopInfo(R.drawable.xing, "name-3", "content-3"));
        l.add(new shopInfo(R.drawable.xing, "name-4", "content-4"));
        l.add(new shopInfo(R.drawable.xing, "name-5", "content-5"));
        l.add(new shopInfo(R.drawable.xing, "name-6", "content-6"));
        l.add(new shopInfo(R.drawable.xing, "name-7", "content-7"));
        l.add(new shopInfo(R.drawable.xing, "name-8", "content-8"));
   //準(zhǔn)備BaseAdapter對象
        MyAdapter a = new MyAdapter();
        //設(shè)置Adapter顯示數(shù)據(jù)
        lv.setAdapter(a);
    }
//這個類可以寫在里面,也可以寫在外面
    public class MyAdapter extends BaseAdapter {
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return l.size();
        }
        @Override
        public Object getItem(int arg0) {
            // TODO Auto-generated method stub
            return null;
        }
        @Override
        public long getItemId(int arg0) {
            // TODO Auto-generated method stub
            return 0;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            // 加載item的布局
            View view = View.inflate(MainActivity.this, R.layout.item, null);
            
            shopInfo s = l.get(position);
            ImageView i = (ImageView) view.findViewById(R.id.iv);
            TextView t1 = (TextView) view.findViewById(R.id.t1);
            TextView t2 = (TextView) view.findViewById(R.id.t2);
            i.setImageResource(s.getIcon());
            t1.setText(s.getName());
            t2.setText(s.getContent());
            convertView  = view ;
            return convertView;
        }
    }
}

shopInfo.java

//每行item的數(shù)據(jù)信息封裝類
public class shopInfo {
    private int icon;
    private String name;
    private String content;
    
    
    public int getIcon() {
        return icon;
    }
    public void setIcon(int icon) {
        this.icon = icon;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public shopInfo(int icon, String name, String content) {
        super();
        this.icon = icon;
        this.name = name;
        this.content = content;
    }
    @Override
    public String toString() {
        return "shopInfo [icon=" + icon + ", name=" + name + ", content="
                + content + "]";
    }
    public shopInfo() {
        super();
        // TODO Auto-generated constructor stub
    }
    
}

899690-20161109132232202-1343256964.png

Release Notes

Popular Entries