lac*_*cas 66 tabs android android-fragments android-viewpager
我有一个ViewPager,我想获得当前选中和可见的视图,而不是位置.
getChildAt(getCurrentItem)
返回错误 View
这并不是所有的时间.有时返回null,有时只返回错误的View.
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser == true) {
mFocusedListView = ListView;
}
}
Run Code Online (Sandbox Code Playgroud)PageListener上ViewPager
用getChildAt()
也没有工作,每次都不给我正确的观点.
我怎样才能获得当前可见的视图?
View view = MyActivity.mViewPager.getChildAt(MyActivity.mViewPager.getCurrentItem()).getRootView();
ListView listview = (ListView) view.findViewById(R.id.ListViewItems);
Run Code Online (Sandbox Code Playgroud)
lac*_*cas 122
我已经明白了.我所做的是setTag()
用一个名字给所有View
s/ListView
s打电话findViewWithTag(mytag)
,然后打电话,mytag
作为标签.
不幸的是,没有其他办法可以解决这个问题.
我刚刚遇到同样的问题并通过使用以下方法解决了
View view = MyActivity.mViewPager.getFocusedChild();
Run Code Online (Sandbox Code Playgroud)
小智 8
我用这个方法 android.support.v4.view.ViewPager
View getCurrentView(ViewPager viewPager) {
try {
final int currentItem = viewPager.getCurrentItem();
for (int i = 0; i < viewPager.getChildCount(); i++) {
final View child = viewPager.getChildAt(i);
final ViewPager.LayoutParams layoutParams = (ViewPager.LayoutParams) child.getLayoutParams();
Field f = layoutParams.getClass().getDeclaredField("position"); //NoSuchFieldException
f.setAccessible(true);
int position = (Integer) f.get(layoutParams); //IllegalAccessException
if (!layoutParams.isDecor && currentItem == position) {
return child;
}
}
} catch (NoSuchFieldException e) {
Log.e(TAG, e.toString());
} catch (IllegalArgumentException e) {
Log.e(TAG, e.toString());
} catch (IllegalAccessException e) {
Log.e(TAG, e.toString());
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
您可以通过从适配器调用访问myAdapter.yourListItens.get(myViewPager.getCurrentItem());
itens 列表来获取当前元素.如您所见,ViewPager可以检索适配器元素的当前索引(当前页面).
如果您正在使用FragmentPagerAdapter,则可以执行以下操作:
FragmentPagerAdapter adapter = (FragmentPagerAdapter)myViewPager.getAdapter();
Run Code Online (Sandbox Code Playgroud)
并打电话
adapter.getItem(myViewPager.getCurrentItem());
Run Code Online (Sandbox Code Playgroud)
这对我很有用;)
归档时间: |
|
查看次数: |
87207 次 |
最近记录: |