199.m1-ListView的优化

点击ListView的时候,条目的背景颜色等等都会影响视觉效果,现在对ListView优化,创建一个自定义的ListView使用的时候直接使用自定义的ListView。

package com.ldw.market.view;

import com.ldw.market.R;
import com.ldw.market.utils.UiUtils;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;

/*
 * 自定义ListView的方法,初始化ListView的时候会初始化这些方法
 */
public class BaseListView extends ListView {
	
	public BaseListView(Context context) {
		super(context);
		init();
	}

	public BaseListView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		init();
	}

	public BaseListView(Context context, AttributeSet attrs) {
		super(context, attrs);
		init();
	}

	private void init() {
//		setSelector  点击显示的颜色
//		setCacheColorHint  拖拽的颜色
//		setDivider  每个条目的间隔	的分割线	
		this.setSelector(R.drawable.nothing);  // 什么都没有
		this.setCacheColorHint(R.drawable.nothing);
		this.setDivider(UiUtils.getDrawalbe(R.drawable.nothing));
	}

}
UiUtils.java
	public static Drawable getDrawalbe(int id) {
		return getResource().getDrawable(id);
	}

HomeFragment.java使用自定义的控件

package com.ldw.market.fragment;

import java.util.List;

import android.content.Intent;
import android.text.format.Formatter;
import android.view.View;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RatingBar;
import android.widget.TextView;
import android.widget.Toast;

import com.ldw.market.DetailActivity;
import com.ldw.market.R;
import com.ldw.market.Adapter.DefaultAdapter;
import com.ldw.market.domain.AppInfo;
import com.ldw.market.holder.BaseHolder;
import com.ldw.market.http.HttpHelper;
import com.ldw.market.protocol.AppProtocol;
import com.ldw.market.protocol.GameProtocol;
import com.ldw.market.utils.UiUtils;
import com.ldw.market.view.BaseListView;
import com.ldw.market.view.LoadingPage.LoadResult;
import com.lidroid.xutils.bitmap.PauseOnScrollListener;

public class AppFragment extends BaseFragment1 {

	List<AppInfo> datas;
	
	//加载成功,显示ListView
	@Override
	public View createSuccessView() {
		BaseListView  listView=new BaseListView(UiUtils.getContext());
		listView.setAdapter(new AppAdapter(datas, listView));
		// 第二个参数 慢慢滑动的时候是否加载图片 false  加载   true 不加载
		//  第三个参数  飞速滑动的时候是否加载图片  true 不加载 
		listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true));
		bitmapUtils.configDefaultLoadingImage(R.drawable.ic_default);  // 设置如果图片加载中显示的图片
        bitmapUtils.configDefaultLoadFailedImage(R.drawable.ic_default);// 加载失败显示的图片
		return listView;
	}
	
	public class AppAdapter extends DefaultAdapter<AppInfo>{

		public AppAdapter(List<AppInfo> datas, ListView lv) {
			super(datas, lv);
			// TODO Auto-generated constructor stub
		}

		@Override
		protected BaseHolder<AppInfo> getHolder() {
			return new ViewHolder();
		}

		//加载更多数据下拉条的实现
		@Override
		protected List<AppInfo> onload() {
			AppProtocol protocol = new AppProtocol();
			List<AppInfo> data = protocol.load(datas.size());
			datas.addAll(data);
			return data;
		}
		
		/**在该方法去处理条目的点击事件*/
		@Override
		public void onInnerItemClick(int position) {
			Toast.makeText(UiUtils.getContext(), "position:"+position, 0).show();
			super.onInnerItemClick(position);
			AppInfo appInfo = datas.get(position);
			//点击以后跳转到详情页
			Intent intent = new Intent(UiUtils.getContext(), DetailActivity.class);
			//携带参数,点击的是哪一个应用,把包名传递过去
			intent.putExtra("packageName", appInfo.getPackageName());
			startActivity(intent);
			
		}
		
	}
	
	static class ViewHolder extends BaseHolder<AppInfo>{
		ImageView item_icon;
		TextView item_title,item_size,item_bottom;
		RatingBar item_rating;

		
		//更新界面
		@Override
		public void refreshView(AppInfo data){
			this.item_title.setText(data.getName());// 设置应用程序的名字
			String size = Formatter.formatFileSize(UiUtils.getContext(), data.getSize());
			this.item_size.setText(size);
			this.item_bottom.setText(data.getDes());
			float stars = data.getStars();
			this.item_rating.setRating(stars); // 设置ratingBar的值
			String iconUrl = data.getIconUrl(); //这个地址不全,需要加上apache地址"iconUrl": "app/com.youyuan.yyhl/icon.jpg",
			//http://127.0.0.1:8090/image?name=app/com.youyuan.yyhl/icon.jpg
			
			
			//第一个参数是显示图片的控件,第二个参数是显示图片的url
			bitmapUtils.display(this.item_icon, HttpHelper.URL+"image?name="+iconUrl);
			// 显示图片的控件
			//bitmapUtils.display(holder.item_icon, HttpHelper.URL+"image?name="+iconUrl);
		}

		@Override
		public View initView() {
			View contentView = View.inflate(UiUtils.getContext(), R.layout.item_app, null);
			this.item_icon = (ImageView) contentView.findViewById(R.id.item_icon);
			this.item_title = (TextView) contentView.findViewById(R.id.item_title);
			this.item_size = (TextView) contentView.findViewById(R.id.item_size);
			this.item_bottom = (TextView) contentView.findViewById(R.id.item_bottom);
			this.item_rating = (RatingBar) contentView.findViewById(R.id.item_rating);
			return contentView;
		}

	}

	/*
	 * 请求服务器获取服务器的数据(non-Javadoc)
	 * @see com.ldw.market.fragment.BaseFragment#load()
	 */
	@Override
	protected LoadResult load() {
		AppProtocol protocol = new AppProtocol();
		datas = protocol.load(0);
		return checkData(datas);
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值