ViewHolder基类,带声音的SoundToast
来源:互联网 发布:剑桥倚天屠龙史 知乎 编辑:程序博客网 时间:2024/06/06 04:46
/**
* 通用ViewHolder缓存类*
* @author chenxiaosong
*
*/
public class ViewHolder {
private ImageLoader mImageLoader;
private final SparseArray<View> mViews;
private int mPosition;
private View mConvertView;
public ViewHolder(Context context,ViewGroup parent,int layoutId,int mPosition) {
super();
this.mPosition = mPosition;
this.mViews=new SparseArray<View>();
mConvertView = LayoutInflater.from(context).inflate(layoutId, parent,false);
mConvertView.setTag(this);
}
//拿到一个ViewHolder对象
public static ViewHolder get(Context context, View convertView,ViewGroup parent,int layoutId, int position){
if(convertView==null){
return new ViewHolder(context, parent, layoutId, position);
}
return (ViewHolder) convertView.getTag();
}
public View getConvertView(){
return mConvertView;
}
//通过控件的id获取对应的控件,如果没有则加入views
public <T extends View> T getView(int viewId){
View view=mViews.get(viewId);
if(view==null){
view=mConvertView.findViewById(viewId);
mViews.put(viewId, view);
}
return (T)view;
}
//为textView设置字符串
public ViewHolder setText(int viewId,String text){
TextView view=getView(viewId);
view.setText(text);
return this;
}
//为ImageView设置图片
public ViewHolder setImageResource(int viewId,int drawableId){
ImageView view=getView(viewId);
view.setImageResource(drawableId);
return this;
}
//为ImageView设置图片
public ViewHolder setImageBitmap(int viewId,Bitmap bm){
ImageView view=getView(viewId);
view.setImageBitmap(bm);
return this;
}
//为ImageView设置图片
public ViewHolder setImageByUrl(int viewId,String url){
mImageLoader.displayImage(url, (ImageView)getView(viewId));
return this;
}
public int getPosition(){
return mPosition;
}
}
public abstract class CommonAdapter<T> extends BaseAdapter {
protected LayoutInflater mInflater;
protected Context mContext;
protected List<T> mDatas;
protected final int mItemLayoutId;
public CommonAdapter(Context context,List<T> mDatas,int itemLayoutId){
this.mContext=context;
this.mInflater=LayoutInflater.from(mContext);
this.mDatas=mDatas;
this.mItemLayoutId=itemLayoutId;
}
@Override
public int getCount() {
return mDatas.size();
}
@Override
public Object getItem(int position) {
return mDatas.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//从ViewHolder中获取控件view,若为空则创建
final ViewHolder viewHolder=getViewHolder(position,convertView,parent);
convert(viewHolder, getItem(position));
return viewHolder.getConvertView();
}
//抽取出getView中间改变的部分
public abstract void convert(ViewHolder helper,Object object);
private ViewHolder getViewHolder(int position,View convertView,ViewGroup parent){
return ViewHolder.get(mContext, convertView, parent, mItemLayoutId, position);
}
}
/**
* 自定义声音提示Toast控件
* @author chenxiaosong
*
*/
public class SoundToast extends Toast{
private MediaPlayer mPlayer;
private boolean isSound;
public SoundToast(Context context) {
this(context,false);
}
public SoundToast(Context context,boolean isSound){
super(context);
this.isSound=isSound;
// mPlayer=MediaPlayer.create(context, resid)
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
}
public void show(){
super.show();
if(isSound){
mPlayer.start();
}
}
//获取控件实例
public static SoundToast show(Context context,CharSequence text,boolean isSound,int duration){
SoundToast result=new SoundToast(context,isSound);
LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
DisplayMetrics dm=context.getResources().getDisplayMetrics();
View v=inflater.inflate(R.layout.abc_action_bar_decor, null);//加载toast布局
v.setMinimumWidth(dm.widthPixels);//设置控件最小宽度为手机屏幕宽度
TextView tv=(TextView)v.findViewById(R.id.action_bar);
tv.setText(text);
result.setView(v);
result.setDuration(duration);
return result;
}
}
- ViewHolder基类,带声音的SoundToast
- 自定义带声音的Toast
- 录制带声音的视频
- HeaderAndFooterRecyclerView 带emptyview、头部header和尾部footer的封装 通用Adapter ViewHolder
- Android中实现带声音提示的Toast
- Android自定义点击带声音的控件TextView/Button/ListView
- viewholder的使用
- ViewHolder的妙用
- 新版的ViewHolder
- ViewHolder的 简洁写法
- viewholder的使用
- ViewHolder的简洁写法
- ViewHolder的使用
- viewholder的使用
- ViewHolder的经典用法
- ViewHolder的另一种写法
- 优雅的使用ViewHolder
- 通用ViewHolder的写法
- HDU 5273 Dylans loves sequence(线段树求逆序数对+离散化)
- 《Spring技术内幕》学习笔记5——IoC容器的依赖注入
- C#减少图片文件大小和尺寸(转)
- IOS日期转为今天昨天形式
- 在unity3d中编写你的第一个着色器
- ViewHolder基类,带声音的SoundToast
- QTabWidget
- IOS-使用blend改变图片颜色
- Spring源码解析 依赖注入
- PHP调用C++扩展时memset/sizeof函数无效的问题
- winform客户端升级组件autoUpdate报错
- 抓取Web网页数据分析(转)
- 集合总览--Collection框架整体解析
- Oracle sqlldr导入数据使用默认值日期