199.m1-ListView的优化

xiaoxiao2021-02-28  126

点击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); } }

转载请注明原文地址: https://www.6miu.com/read-67125.html

最新回复(0)