임 탭 레이아웃을 사용과 보이지 않는 캐시 조각에 ViewPager/탭 구현에 조각을 새로 고침하고 메신저를 시도 (ViewPager와,이 어댑터는 FragmentStatePagerAdapter 및 TabLayout의 확장 것) Tab1에있는 버튼을 클릭하면 tab2에서 listview를 새로 고침하십시오. 다른 어떤 방법으로도 알지 못하기 때문에 지금은 viewpager를 보유하고있는 활동에서이 일을하고 있습니다.다시로드는/사용자 정의 어댑터
View _list = Activity.FindViewById(Resource.Id.MessagesListView);
var _adapter = new MessagesAdapter(Activity, null);
_adapter.NotifyDataSetChanged();
_adapter = new MessagesAdapter(Activity, _reviewList);
var _listview= (ListView)_list;
_listview.Adapter = _adapter;
_adapter.NotifyDataSetChanged();
당신으로 :이 같은으로 목록보기 새로 고침
- 모니터 이 때 표시 될 TAB2
ViewPager
의을 OnTabSelected : 내가 새로 고침하는 방법은하는 것입니다 코드에서 이해할 수도, 내 문제는 ListView 나던가 항목을 대체 할, 그것은 단지 다른 사람의 상단에 그들을 추가, 어떻게 listview 지울 수 있습니까?
나는 또한 행운을 가지고 으로 시도했다. .RemoveViews (0, test.ChildCount); 내 listview 어댑터는 BaseAdapter의 간단한 확장입니다.
당신은 제안
에 메신저 개방 새로 고침 ListView에 또는 조각의 또 다른 더 좋은 방법이 또한 경우편집 : 사람이 더 많은 제안이있는 경우, 꽤 잘 작동
내 최종 어댑터 의견을 남겨주세요.
using Android.Support.V4.App;
using Android.Util;
using Java.Lang;
using Fragment = Android.Support.V4.App.Fragment;
namespace StaffPro
{
public class TabsFragmentPagerAdapter : FragmentStatePagerAdapter
{
private readonly Fragment[] fragments;
private readonly ICharSequence[] titles;
SparseArray<Fragment> registeredFragments = new SparseArray<Fragment>();
public TabsFragmentPagerAdapter(FragmentManager fm, Fragment[] fragments, ICharSequence[] titles) : base(fm)
{
this.fragments = fragments;
this.titles = titles;
}
public override int Count
{
get
{
return fragments.Length;
}
}
public override Fragment GetItem(int position)
{
return fragments[position];
}
public override ICharSequence GetPageTitleFormatted(int position)
{
return titles[position];
}
public override void DestroyItem(Android.Views.View container, int position, Java.Lang.Object objectValue)
{
registeredFragments.Remove(position);
base.DestroyItem(container, position, objectValue);
}
public override Java.Lang.Object InstantiateItem(Android.Views.ViewGroup container, int position)
{
Fragment fragment = (Fragment)base.InstantiateItem(container, position);
registeredFragments.Put(position, fragment);
return fragment;
}
public Fragment GetRegisteredFragment(int position)
{
return registeredFragments.Get(position);
}
}
}
감사합니다, 최대한 빨리 시도해 보겠습니다. getregisteredfragment에서 위치가 무엇입니까? viewpager가 조각 (예 : 1 단편 1tab, 2 단편 2 탭 등)의 줄 또는 캐시 된 단편의 위치를로드하는 초기 위치? – CDrosos
@CDrosos 이렇게 등록 된 조각은 SparseArray 유형이어야합니다 (SparseArray registeredFragments = new SparseArray ();) 위치는 뷰 페이지의 위치입니다 프래그먼트가 등록됩니다. InstantiateItem 인스턴스화 될 때 프래그먼트 위치를이 배열에 넣습니다. 따라서 4 페이지짜리 Viewpager를 가지고 있고 페이지가 0이고 조각이 4 페이지에 있다면 그 위치는 3입니다. –
jaymarvels
안녕하십니까. 프래그먼트가 회전 진행 막대를 표시 할 수있는 방법이 있습니까? 그 로딩, 우리가 탭을 바꿀 때? 페이스 북의 메신저처럼, 감사합니다. – CDrosos