android listView效能最佳化

來源:互聯網
上載者:User

標籤:listview最佳化

package com.example.ex_000_example;


import java.util.ArrayList;

import android.os.Bundle;

import android.app.Activity;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.View;

import android.view.ViewGroup;

import android.view.View.OnClickListener;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.ListView;

import android.widget.TextView;


public class MainActivity extends Activity implements OnClickListener {


        //準備好的圖片資源

private int[] imageList = new int[] { R.drawable.qq0, R.drawable.qq1,

R.drawable.qq2, R.drawable.qq3, R.drawable.qq4, R.drawable.qq5,

R.drawable.qq6, R.drawable.qq7, R.drawable.qq8, R.drawable.qq9,

R.drawable.qq10, R.drawable.qq11, R.drawable.qq12, R.drawable.qq13,

R.drawable.qq14 };


private ArrayList<MyDate> dateList = new ArrayList<MyDate>();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// 準備資料

for (int i = 0; i < imageList.length; i++) {

MyDate myDate = new MyDate("資料來了"+i, imageList[i]);

dateList.add(myDate);

}

ListView listView = (ListView) findViewById(R.id.listView1);

MyAdapter myAdapter = new MyAdapter();

// 設定適配器

listView.setAdapter(myAdapter);

}

        //減少控制項尋找次數

class ViewHolder {

TextView textView;

ImageView imageView;

}


class MyAdapter extends BaseAdapter {

// 設定每行的樣式以及顯示

@Override

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

View inflate = null;

ViewHolder holder = null;

if (convertView == null) {

holder = new ViewHolder();

// 得到布局轉換器

LayoutInflater inflater = getLayoutInflater();

// 將布局xml檔案轉換成布局對象

inflate = inflater.inflate(R.layout.list_item, null);

// 尋找控制項,一定要尋找該布局對象上有的控制項

holder.textView = (TextView) inflate

.findViewById(R.id.textView1);

holder.imageView = (ImageView) inflate

.findViewById(R.id.imageView1);

// 將儲存控制項的對象存入行布局對象的tag中

inflate.setTag(holder);

} else {

// 讓那個已經完全消失的布局對象,去替代即將出現的

inflate = convertView;

// 從行布局對象中取出之前存好的控制項

holder = (ViewHolder) inflate.getTag();

}

// 根據position從容器中取出資料

MyDate myDate = dateList.get(position);

// 將資料顯示到控制項上

holder.textView.setText(myDate.title);

holder.imageView.setImageResource(myDate.image);

return inflate;

}

// 決定了listview顯示的行數

@Override

public int getCount() {

// TODO Auto-generated method stub

return dateList.size();

}


@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;

}


}


@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}




    class MyDate{

String title;

int image;

public MyDate(String title, int image) {

super();

this.title = title;

this.image = image;

}

}


}


本文出自 “破公子” 部落格,請務必保留此出處http://pogongzi.blog.51cto.com/8982426/1621265

android listView效能最佳化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.