Android小坑Android开发经验谈Android知识

android 重新加载网络页面设置

2017-08-09  本文已影响25人  badc59a1a8c4

这两天在优化程序的页面,重新加载网络的工作,感触颇多。在这里将自己学到的给大家分享一下:
我们获取网络数据时,如果突然断网,或者网络不好,不能获取完整的数据,那么我们就需要弹出重新加载的按钮,当用户点击时,如果网络网络状态良好,就应该重新加载页面。
上代码:`public class DiyView {
private View view = null;
private ViewGroup viewGroup = null;
private Context mContext;
private String TAG = "DiyView";
private AgainView againView;
private TextView tv_again;
public final static int TYPE_NULL = 0;
public final static int TYPE_Error = 1;
public DiyView(Context context, ViewGroup viewGroup) {
this.viewGroup = viewGroup;
this.mContext = context;
}

/**设置当前状态:TYPE_NULL---》请求成功,没有数据TYPE_Error---》请求失败,重新加载
 *
 * @param type
 */
public void setReturnView(int type){
    switch (type){
        case TYPE_NULL:
          view = LayoutInflater.from(mContext).inflate(R.layout.lay_nulldata,viewGroup,false);
            viewGroup.addView(view,0);
            break;
        case TYPE_Error:
            if(viewGroup==null){
                Log.d(TAG, "setReturnView: "+"Viewgroup"+"是空");
            }
            view = LayoutInflater.from(mContext).inflate(R.layout.lay_tryagain,viewGroup,false);
            if(view==null){
                Log.d(TAG, "setReturnView: "+"view是空" );
            }
            viewGroup.addView(view,0);
            tv_again = (TextView) viewGroup.findViewById(R.id.tv_again);
            break;
    }
}
/**
 * 请求失败是点击重新加载的外接接口
 * @param tryAgain
 */
public void setTryAgain(final AgainView tryAgain){
       tv_again.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               Log.d(TAG, "onClick: "+"点击了重新加载");
               clearView();
               tryAgain.try_Again();
           }
       });
}
/**
 * 重新加载完成后,或者是正常加载时,清除之前添加的页面
 */
public void clearView(){
    if(view!=null){
        viewGroup.removeView(view);
    }
    //之前没有添加view,所以不操作
    else{
    }
}

}
`
使用的时候,在应的activity先实例化类,为什么不用单例模式呢?应为每个页面的ViewGroup都是不一样的。其中View是我们自定义的加载页面。在使用它的时候呢,把要作为父控件的控件放到实例化的类里面,如果获取数据失败,就调用diyView.setReturnView(DiyView.TYPE_Error);方法。
---2016-07-12
今天在使用过程中发现,该类使用onclick的话,必须点击两下才能相应点击事件。这是应为,在相应点击事件的时候,要先获取控件的焦点,然后才会响应点击。解决方法是,将点击事件换成触摸事件setOnTouchListener就可以啦。
在遇到ViewGroup是相对布局或者帧布局的时候,要将布局下的子控件的宽高改成自适应的宽高,这样重新加载的按钮才不会被原来的布局给覆盖住。 ---2016-07-13(刚写了一遍,没保存成功,所以略写)

上一篇下一篇

猜你喜欢

热点阅读