如何实现QuickReturnList在活动? [英] How to implement QuickReturnList in an Activity?
本文介绍了如何实现QuickReturnList在活动?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何实现的标签,使用活动为每个标签。我发现本教程但与片段实施。 这里是显示正是我想要做的视频。
下面是我一直在努力做:
DefaultActivity.java
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState); LayoutInflater吹气=(LayoutInflater)DefaultActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
鉴于= inflater.inflate(R.layout.fragment,NULL);
mHeader = inflater.inflate(R.layout.header,NULL);
mQuickReturnView =(TextView中)view.findViewById(R.id.sticky);
mPlaceHolder = mHeader.findViewById(R.id.placeholder); mListView =(QuickReturnListView)getListView(); //在这里展示类转换异常 mQuickReturnView.setText(默认);
mListView.addHeaderView(mHeader); String []数组=新的String [] {机器人,机器人,机器人,
机器人,机器人,机器人,机器人,机器人,
机器人,机器人,机器人,机器人,机器人,
机器人,机器人,机器人}; ArrayAdapter<串GT;适配器=新ArrayAdapter<串GT;(这一点,
android.R.layout.simple_list_item_1,数组);
mListView.getViewTreeObserver()。addOnGlobalLayoutListener(
新ViewTreeObserver.OnGlobalLayoutListener(){
@覆盖
公共无效onGlobalLayout(){
mQuickReturnHeight = mQuickReturnView.getHeight();
mListView.computeScrollY();
mCachedVerticalScrollRange = mListView.getListHeight();
}
}); mListView.setOnScrollListener(新OnScrollListener(){
@燮pressLint(NewApi)
@覆盖
公共无效onScroll(AbsListView观点,诠释firstVisibleItem,
INT visibleItemCount,诠释totalItemCount){ mScrollY = 0;
INT translationY = 0; 如果(mListView.scrollYIsComputed()){
mScrollY = mListView.getComputedScrollY();
} INT rawY = mPlaceHolder.getTop()
- Math.min(
mCachedVerticalScrollRange
- mListView.getHeight(),mScrollY); 开关(mState){
案例STATE_OFFSCREEN:
如果(rawY< = mMinRawY){
mMinRawY = rawY;
}其他{
mState = STATE_RETURNING;
}
translationY = rawY;
打破; 案例STATE_ONSCREEN:
如果(rawY< -mQuickReturnHeight){
mState = STATE_OFFSCREEN;
mMinRawY = rawY;
}
translationY = rawY;
打破; 案例STATE_RETURNING:
translationY =(rawY - mMinRawY) - mQuickReturnHeight;
如果(translationY大于0){
translationY = 0;
mMinRawY = rawY - mQuickReturnHeight;
} 如果(rawY大于0){
mState = STATE_ONSCREEN;
translationY = rawY;
} 如果(translationY< -mQuickReturnHeight){
mState = STATE_OFFSCREEN;
mMinRawY = rawY;
}
打破;
} / **这可如果构建低于蜂窝使用** /
如果(Build.VERSION.SDK_INT< = Build.VERSION_ codeS.HONEYCOMB){
阿尼姆=新TranslateAnimation(0,0,translationY,
translationY);
anim.setFillAfter(真);
anim.setDuration(0);
mQuickReturnView.startAnimation(阿尼姆);
}其他{
mQuickReturnView.setTranslationY(translationY);
} } @覆盖
公共无效onScrollStateChanged(AbsListView观点,诠释scrollState){
}
});
rlMain =(RelativeLayout的)findViewById(R.id.main);
rlMain.addView(视图);
的setContentView(R.layout.activity_main); }
现在它显示误差 mListView =(QuickReturnListView)getListView();
02-13 21:23:03.389:E / AndroidRuntime(26896):了java.lang.RuntimeException:无法启动活动ComponentInfo{com.example.quickreturnlistwithactivity/com.example.quickreturnlistwithactivity.QuickReturnActivity}: java.lang.ClassCastException:android.widget.ListView不能转换为com.example.quickreturnlistwithactivity.QuickReturnListView
02-13 21:23:03.389:E / AndroidRuntime(26896):java.lang.ClassCastException:致android.widget.ListView不能转换为com.example.quickreturnlistwithactivity.QuickReturnListView
02-13 21:23:03.389:E / AndroidRuntime(26896):在com.example.quickreturnlistwithactivity.QuickReturnActivity.onCreate(QuickReturnActivity.java:67)
解决方案
您确定您有标记的样子:
< your_package_path.QuickReturnListView
How to implement tabs, using activity for each tab. I found this tutorial but it implemented with Fragments. Here is a video that show exactly what I want to do.
Here what I been trying to do:
DefaultActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater inflater = (LayoutInflater) DefaultActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.fragment, null);
mHeader = inflater.inflate(R.layout.header, null);
mQuickReturnView = (TextView) view.findViewById(R.id.sticky);
mPlaceHolder = mHeader.findViewById(R.id.placeholder);
mListView = (QuickReturnListView) getListView(); //showing class cast exception here
mQuickReturnView.setText("Default");
mListView.addHeaderView(mHeader);
String[] array = new String[] { "Android", "Android", "Android",
"Android", "Android", "Android", "Android", "Android",
"Android", "Android", "Android", "Android", "Android",
"Android", "Android", "Android" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,array);
mListView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mQuickReturnHeight = mQuickReturnView.getHeight();
mListView.computeScrollY();
mCachedVerticalScrollRange = mListView.getListHeight();
}
});
mListView.setOnScrollListener(new OnScrollListener() {
@SuppressLint("NewApi")
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
mScrollY = 0;
int translationY = 0;
if (mListView.scrollYIsComputed()) {
mScrollY = mListView.getComputedScrollY();
}
int rawY = mPlaceHolder.getTop()
- Math.min(
mCachedVerticalScrollRange
- mListView.getHeight(), mScrollY);
switch (mState) {
case STATE_OFFSCREEN:
if (rawY <= mMinRawY) {
mMinRawY = rawY;
} else {
mState = STATE_RETURNING;
}
translationY = rawY;
break;
case STATE_ONSCREEN:
if (rawY < -mQuickReturnHeight) {
mState = STATE_OFFSCREEN;
mMinRawY = rawY;
}
translationY = rawY;
break;
case STATE_RETURNING:
translationY = (rawY - mMinRawY) - mQuickReturnHeight;
if (translationY > 0) {
translationY = 0;
mMinRawY = rawY - mQuickReturnHeight;
}
if (rawY > 0) {
mState = STATE_ONSCREEN;
translationY = rawY;
}
if (translationY < -mQuickReturnHeight) {
mState = STATE_OFFSCREEN;
mMinRawY = rawY;
}
break;
}
/** this can be used if the build is below honeycomb **/
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB) {
anim = new TranslateAnimation(0, 0, translationY,
translationY);
anim.setFillAfter(true);
anim.setDuration(0);
mQuickReturnView.startAnimation(anim);
} else {
mQuickReturnView.setTranslationY(translationY);
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
});
rlMain = (RelativeLayout)findViewById(R.id.main);
rlMain.addView(view);
setContentView(R.layout.activity_main);
}
Now it showing error in mListView = (QuickReturnListView) getListView();
02-13 21:23:03.389: E/AndroidRuntime(26896): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.quickreturnlistwithactivity/com.example.quickreturnlistwithactivity.QuickReturnActivity}: java.lang.ClassCastException: android.widget.ListView cannot be cast to com.example.quickreturnlistwithactivity.QuickReturnListView
02-13 21:23:03.389: E/AndroidRuntime(26896): Caused by: java.lang.ClassCastException: android.widget.ListView cannot be cast to com.example.quickreturnlistwithactivity.QuickReturnListView
02-13 21:23:03.389: E/AndroidRuntime(26896): at com.example.quickreturnlistwithactivity.QuickReturnActivity.onCreate(QuickReturnActivity.java:67)
解决方案
Are you sure that you have the markup looks like:
<your_package_path.QuickReturnListView
这篇关于如何实现QuickReturnList在活动?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文