編輯:關於Android編程
眾所周知,在開發過程中,ListView的優化是比較重要的
那麼,如何去優化呢?
ListView的提升效率,其實就是在於adapter中getView方法的優化,那麼如何使的getView優化呢?
1、在getView() 中重用了convertView,很大程度上的減少了內存的消耗。通過判斷convertView是否為null,
是的話就需要產生一個視圖出來,然後給這個視圖數據,最後將這個視圖返回給底層,呈獻給用戶。
比如:listview 屏幕顯示10條數據,當用戶滑動listview的時候,第11條數據出現的時候,第一條數據
就會被android本身提供的 Recycler,將這條item(View)放進RecycleBin(回收站)中,然後顯示新視
圖的時候,從RecycleBin中重復用這個View。就不會造成每次都要去創建新的View,而節約了大量的資源。
2、自身寫一個ViewHold 類,這個ViewHolder,用來標識view中一些控件,方便進行一些事件相應操作的設置,
這樣就不用每次getView() 的View只要找一次控件就好了,不用每次都去尋找
代碼表示如下:
// getView 方法的優化
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext()).inflate(
R.layout.activity_list_item, null);
ViewHolder viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
}
ViewHolder viewHolder = (ViewHolder) convertView.getTag();
viewHolder.fillView(getItem(position));
return convertView;
}
// 這個類是View的顯示,也就是Listview的每條顯示的東西
class ViewHolder {
private ImageView iv_NewsImage;
private TextView tv_NewsTitle;
private TextView tv_NewsDate;
public ViewHolder(View convertView) {
iv_NewsImage = (ImageView) convertView.findViewById(R.id.newImage);
tv_NewsTitle = (TextView) convertView.findViewById(R.id.newTitle);
tv_NewsDate = (TextView) convertView.findViewById(R.id.newDate);
}
public void fillView(Object item) {
final NewsInfo news = (NewsInfo) item;
tv_NewsTitle.setText(news.getNewTitle());
tv_NewsDate.setText(getDate(news.getNewDate()));
ImageLoader.getInstance().displayImage(news.getNewImageUrl(),
iv_NewsImage);
}
private String getDate(long time) {
Date date = new Date(time);
SimpleDateFormat formatter = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
return formatter.format(date);
}
}
Android-使用WebView顯示網頁WebView是安卓提供顯示web界面的工具類,可以像PC端的浏覽器那樣進行顯示:大致就是上圖那樣。其實也可以不用WebView
好久沒有發博客了,現在工作忙了,底層代碼跟蹤學習的東西很久沒有做成文檔了,雖然博客寫的爛,但是再寫的過程中,能更清晰的認識到自己那個地方還不清晰,不明白。這樣能更好的嘴一
锲而捨之,朽木不折;锲而不捨,金石可镂。——荀況今天學習了一下Service的用法就和大家一起來討論Android中Service的相關知識點,如
前文簡單介紹了Android中SurfaceView的基本使用,本文就來介紹一下SurfaceView與多線程的混搭。SurfaceView與多線程混搭,是為了防止動畫閃