android listView的优化内存
来源:互联网 发布:c语言指针编程题 经典 编辑:程序博客网 时间:2024/05/20 08:41
package cn.itcast.mobileguard;
import java.util.List;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.MemoryFile;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import cn.itcast.mobileguard.db.dao.BlackNumberDao;
import cn.itcast.mobileguard.domain.BlackNumber;
public class CallSmsSafeActivity extends Activity {
public static final String TAG = "CallSmsSafeActivity";
private ListView lv_call_sms_safe;
private BlackNumberDao dao;
private List<BlackNumber> blackNumbers;
private LinearLayout ll_loading;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_call_sms_safe);
lv_call_sms_safe = (ListView) findViewById(R.id.lv_call_sms_safe);
ll_loading = (LinearLayout) findViewById(R.id.ll_loading);
dao = new BlackNumberDao(this);
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
blackNumbers = dao.findAll();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPreExecute() {
ll_loading.setVisibility(View.VISIBLE);
super.onPreExecute();
}
@Override
protected void onPostExecute(Void result) {
ll_loading.setVisibility(View.INVISIBLE);
lv_call_sms_safe.setAdapter(new CallSmsAdapter());
super.onPostExecute(result);
}
}.execute();
super.onCreate(savedInstanceState);
}
private class CallSmsAdapter extends BaseAdapter {
public int getCount() {
return blackNumbers.size();
}
public Object getItem(int position) {
return blackNumbers.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
ViewHolder holder;
if (convertView != null && convertView instanceof RelativeLayout) {
view = convertView;
Log.i(TAG, "使用缓存view对象" + position);
holder = (ViewHolder) view.getTag();
} else {
Log.i(TAG, "创建新的view对象" + position);
view = View.inflate(getApplicationContext(),
R.layout.layout_call_sms_item, null);
holder = new ViewHolder();
holder.tv_mode = (TextView) view
.findViewById(R.id.tv_call_sms_item_mode);
holder.tv_number = (TextView) view
.findViewById(R.id.tv_call_sms_item_number);
//把textview对象的引用存放在 view对象里面.
//减少了控件被查询的次数,只在控件被初始化 查询寻找控件
view.setTag(holder);
}
BlackNumber blackNumber = blackNumbers.get(position);
String mode = blackNumber.getMode();
if ("phone".equals(mode)) {
holder.tv_mode.setText("电话拦截");
} else if ("sms".equals(mode)) {
holder.tv_mode.setText("短信拦截");
} else {
holder.tv_mode.setText("全部拦截");
}
holder.tv_number.setText(blackNumber.getNumber());
return view;
}
}
static class ViewHolder{
TextView tv_mode;
TextView tv_number;
}
}
- android listView的优化内存
- Android ListView内存优化
- android之listview内存优化
- Android移动开发 ListView使用BaseAdapter与ListView的优化,内存优化处理(转载)
- Android ListView的优化
- Android ListView 的优化
- android ListView的优化
- android----------ListView的优化
- Android ListView的优化
- android ListView的优化
- Android ListView的优化
- android listview的优化
- [Android] ListView的优化
- Android的Listview优化
- 内存泄漏优化---ListView的优化
- android内存溢出问题:ListView优化
- Android加载数据ListView优化内存实现
- android 的listview的优化
- poj1018 - Communication System
- boost高并发网络框架+线程池
- shell 编程 之程序监控
- 栈和队列 应用题
- 百度地图SDK for Android【Demo调起百度地图客户端导航功能】
- android listView的优化内存
- 在web项目中使用线程池发送邮件实例
- 130521建立AWR及AWR管理
- 插入排序 渐增型算法
- android 在线视频的播放
- iphone开发学习视频
- discuz修改注册时提示的用户名不得小于3 个字符
- java中通过url传递中文参数,取值是乱码的解决办法
- html中id与name的区别