linearlayout does not fully implement ViewParent 问题 求大神解答

cdsn13082487212 2016-12-19 08:24:52

public class MyView extends ListView {
// 头部view
private View headerView ;
// 手指碰到屏幕的位置
private int pressy;
// header高度
private int headerViewHeight ;

private ProgressBar pb ;

private ImageView iv ;
private boolean isDown ;
private ReflashListener mListener;
private boolean isreflashing ;

// public MyView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
// super(context, attrs, defStyleAttr, defStyleRes);
// initView(context);
// }

public void setReflashListener(ReflashListener mListener){
this.mListener = mListener ;
}
public MyView(Context context) {
super(context);
initView(context);
}

public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
initView(context);
}

public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView(context);
}
private void initView(Context context){
isreflashing = false ;
isDown = true;
headerView = View.inflate(context, R.layout.header, null);
pb = (ProgressBar) headerView.findViewById(R.id.pb);
iv = (ImageView) headerView.findViewById(R.id.iv);
// 此时还没有测量,需要用到高度,通知系统去测量header的高度
headerView.measure(0, 0);
int height = headerView.getMeasuredHeight();
// 进度条不可见
pb.setVisibility(View.INVISIBLE);
headerViewHeight = height;
headerView.setPadding(0, -height, 0, 0);
this.addHeaderView(headerView);
}

@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getAction()){
case MotionEvent.ACTION_DOWN:
if(isreflashing){
return false;
}
iv.setVisibility(View.VISIBLE);
pb.setVisibility(View.INVISIBLE);
pressy = (int) ev.getRawY();

break;
case MotionEvent.ACTION_MOVE:
// 手指下化得距离
int dy = (int) (ev.getRawY()-pressy);
if(dy<=headerViewHeight/2&&!isDown){
iv.clearAnimation();
isDown = true ;
}
if(dy>headerViewHeight/2 && isDown){
// 下滑了headerView一半 此时可以刷新 箭头调转方向
RotateAnimation animation = new RotateAnimation(0,-180,RotateAnimation.RELATIVE_TO_SELF,
0.5f,RotateAnimation.RELATIVE_TO_SELF,0.5f);
animation.setFillAfter(true);
iv.startAnimation(animation);
isDown = false;
}
// 下滑了整个headerView 的高度
if(dy>headerViewHeight){
break;
}
headerView.setPadding(0, -headerViewHeight + dy, 0, 0);
break;
case MotionEvent.ACTION_UP:
if(!isDown){
headerView.setPadding(0,0,0,0);
// iv.clearAnimation();
// iv.setVisibility(View.INVISIBLE);
// pb.setVisibility(View.VISIBLE);
isreflashing = true;
if(mListener!=null ){
mListener.reflash();
}
}else{
resetView();
}

break;
}
return super.onTouchEvent(ev) ;
}
// 刷新接口
public interface ReflashListener{
public void reflash();
}
public void resetView(){
isreflashing = false ;
headerView.setPadding(0,-headerViewHeight,0,0);
}

}

// 上面是我的自定义listview 下面是我的主界面引用 总是报错
public class MyListView extends Activity {
private MyView mv ;
private List<String > values ;
private AAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mlv);
values = new ArrayList<String>();
for (int i = 0 ;i<20 ;i++){
values.add(""+i);
}
mv = (MyView) findViewById(R.id.myview);
mAdapter = new AAdapter();
mv.setAdapter(mAdapter);
mv.setReflashListener(new MyView.ReflashListener() {
@Override
public void reflash() {
new Thread(new Runnable() {
@Override
public void run() {
values.add("dd");
Log.e("ok","ok");
}
});
}
});
}
class AAdapter extends BaseAdapter{

@Override
public int getCount() {
return values.size();
}

@Override
public Object getItem(int position) {
return null;
}

@Override
public long getItemId(int position) {
return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = View.inflate(MyListView.this,R.layout.item,null);
TextView tv = (TextView) v.findViewById(R.id.text);
tv.setText(values.get(position));
return v ;
}
}
}

...全文
241 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdsn13082487212 2016-12-19
  • 打赏
  • 举报
回复
求大神给解答一下这是为什么,以及如何解答 谢谢。 我就是在引用的时候开了一下进程,如果不开进程不会报错

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧