您的位置:首页 > 理论基础 > 计算机网络

android 重新加载网络页面设置

2016-07-12 23:23 363 查看
这两天在优化程序的页面,重新加载网络的工作,感触颇多。在这里将自己学到的给大家分享一下:

我们获取网络数据时,如果突然断网,或者网络不好,不能获取完整的数据,那么我们就需要弹出重新加载的按钮,当用户点击时,如果网络网络状态良好,就应该重新加载页面。

上代码:`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(刚写了一遍,没保存成功,所以略写)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: