1. 程式人生 > >一、ListView的初級優化

一、ListView的初級優化

public classMainActivity extends Activity {

privateListView lv;

privateList<DataBean> list;//DateBean是描述資料的類,list用於承載ListView要顯示的資料

         @Override

         protectedvoid onCreate(Bundle savedInstanceState) {

                  super.onCreate(savedInstanceState);

                  setContentView(R.layout.activity_main

);

                  list= new ArrayList<Data>();

                  lv= (ListView) findViewById(R.id.lv);

                  lv.setAdapter(newLvAdapter());

         }

         classLvAdapter extends BaseAdapter {//以內部類的形式編寫。

//如果不以內部類的形式,則需在LvAdapter的構造方法中傳入context和承載資料的集合或//陣列。

                  @Override

                  publicint getCount() {

                          returnlist.size();//返回資料的總條數

                  }

                  @Override

                  publicObject getItem(int position) {

                          returnlist.get(position);//獲得當前位置上資料物件

                  }

                  @Override

                  publiclong getItemId(int position) {

                          System.out.println(position);

                          returnposition;//返回item的id

                  }

                  @Override//利用自帶引數優化ListView:convertView當第一個item完全移除螢幕時//才不為null,

                                   //裡面是剛剛移出的item佈局的引用。

                  publicView getView(int position, View convertView, ViewGroup parent) {

                          //item中的控制元件

                          ImageViewiv;

                          TextViewtv;

                          if(convertView==null) {

                                   convertView= View.inflate(getApplicationContext(), R.layout.lv_item, null);

                                   iv= (ImageView) view.findViewById(R.id.iv);

                                   tv= (TextView) view.findViewById(R.id.tv);

                          }else{

                                   iv= (ImageView) convertView.findViewById(R.id.iv);

                                   tv= (TextView) convertView.findViewById(R.id.tv);

                          }

                          iv.setBackgroundResource(list.get(position).getIcon());

                          tv.setText(list.get(position).getText());

                          returnview;

                  }

         }

}

convertView原理: