到目前为止,我一直在ViewHolders
使用RecyclerView
我想知道将它用于活动是否正确?
我现在所做的是在一个活动的OnCreate
方法中,我总是称之为assign_views
的方法,它看起来像这样:
//instance variables
TextView _text_view_1;
TextView _text_view_2;
//etc
void assing_views(boolean assign){
_text_view_1 = assign ? (TextView)findViewById(R.id.text_view_1) : null;
_text_view_2 = assign ? (TextView)findViewById(R.id.text_view_2) : null;
}
并在活动的OnDestroy方法中调用assign_views(false)
所以我将它改成这样的东西会有好处:
private ActivityViewHolder get_holder(){
return (ActivityViewHolder)getRootView().getTag();
}
void assign_views(boolean assign) {
if (assign && get_holder() == null) {
getRootView().setTag(new ActivityViewHolder());
get_holder().text_view_1 = (TextView)findViewById(R.id.text_view_1);
get_holder().text_view_2 = (TextView)findViewById(R.id.text_view_2);
} else if (!assign){
getRootView().setTag(null);
}
}
static class ActivityViewHolder {
TextView text_view_1;
TextView text_view_2;
}
然后将我的所有引用从_text_view_1
替换为get_holder().text_view_1
提前感谢您提供的任何帮助
答案 0 :(得分:0)
onDestoy()
。可能有些尺寸会发生变化,例如ActionBar
的高度与横向和纵向不同,或者另一个版面文件将用于新的方向。
如果要存储视图而不重新创建,则可以手动处理屏幕旋转。这是不好的做法,当你真的应该使用它时,没有那么多的情况。只需按照以下步骤操作:
<activity
android:name=".MyActivity"
android:label="@string/title_my_activity"
android:configChanges="orientation|screenSize|keyboardHidden" />
onConfigurationChanged()
以处理更改。