简体   繁体   English

listview没有使用viewpager选项卡在片段中刷新

[英]listview not refreshing in fragment with viewpager tabs

I got stuck into the problem with listview used with fragment inside viewpager styled tabs that given in jakewharton's Android-ViewPagerIndicator... example on github. 我遇到了listview用于jipwharton的Android-ViewPagerIndicator中给出的viewpager样式标签中的片段的问题... github上的例子。

i am using the same lib for three tabs each having a list view with same arraylist set to there adapters. 我使用相同的lib为三个选项卡,每个选项卡都有一个列表视图,相同的arraylist设置为适配器。

I am using 3 this kind of fragment all are working fine but as i want my list to be updated in all other fragments when i make changes in any one of them, it is not reflecting the changes. 我使用3这种片段都工作正常,但我希望我的列表更新所有其他片段当我在其中任何一个进行更改时,它不反映更改。 i want if i checked a checkbox in any one of the list among three tabs (i am updating values in db and my arraylist) other two listview inside their respective fragments should reflect changes, please help me on this. 我想如果我在三个选项卡中的任何一个列表中检查了一个复选框(我正在更新db和我的arraylist中的值)其他两个listview里面的各个片段应该反映更改,请帮助我。 please help me on this, any help would be appreciated 请帮助我,任何帮助将不胜感激

class RingFragment extends Fragment
{
 public static RingFragment newInstance(Context c, ArrayList<Ringtones> ringList) 
 {
  RingFragment fragment = new RingFragment();
  cCntxt = c;
  return fragment;
 }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle        
savedInstanceState)
 {
  rngAdapter = new RingAdapter(cCntxt, ringFragList);
  lstRingtones = new ListView(cCntxt);
  lstRingtones.setLayoutParams(new    LayoutParams(LayoutParams.FILL_PARENT, 
  LayoutParams.FILL_PARENT));
  lstRingtones.setAdapter(rngAdapter);
  LinearLayout layout = new LinearLayout(getActivity());
  layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,  
  LayoutParams.FILL_PARENT));
  layout.setGravity(Gravity.CENTER);
  layout.addView(lstRingtones);
  return layout;
 }
 public class RingAdapter extends BaseAdapter
 {
    ArrayList<Ringtones> arlstRingAdpter;
    Context adptrContext;
    public boolean noRing = false;
    public RingAdapter(Context c, ArrayList<Ringtones> adptrRngtones)
    {
        arlstRingAdpter = adptrRngtones;
        adptrContext = c;
    }       
   @Override
public int getCount() 
{
  return arlstRingAdpter.size();
}
@Override
public Object getItem(int position) 
{
 return position;
}
@Override
public long getItemId(int position) 
{
 return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) 
{
 View view = convertView;
 final Wrapper wrapper;
     if (view == null) 
 {
     view = (RelativeLayout)LayoutInflater.from(cCntxt).inflate(R.layout.cell_ringtone,     
      null);
 wrapper = new Wrapper(view);
 view.setTag(wrapper);
}
else 
{
 wrapper = (Wrapper) view.getTag();
}
 return view;
}
 }  
 }
 }

:->My Main Activity from where i am calling these fragments is : - >我调用这些片段的主要活动是

public class MainActivity extends FragmentActivity
 {
   ViewPager mPager;
   PageIndicator mIndicator;
MusicAdapter mAdapter;
RingtonesBL rngBL;
  @Override
  public void onCreate(Bundle savedInstanceState) 
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mAdapter = new MusicAdapter(getSupportFragmentManager());
    mPager = (ViewPager)findViewById(R.id.pager);
    mPager.setAdapter(mAdapter);
    mIndicator = (TabPageIndicator)findViewById(R.id.indicator);
    mIndicator.setViewPager(mPager);
  }
class MusicAdapter extends RingtoneFragmentAdapter 
{
 public MusicAdapter(FragmentManager fm) 
 {
  super(fm);
 } 
 @Override
 public Fragment getItem(int position) 
 {
 if(position % CONTENT.length == 0)
 {
  return             
  RingFragment.newInstance(AppConstants.cAppContext,AppConstants.arlst_RingAll);
 }
 else if(position % CONTENT.length == 1)
 {
  return RingFragment1.newInstance(AppConstants.cAppContext, 
  AppConstants.arlst_RingCart);
 }
 else
 {
  return RingFragment2.newInstance(AppConstants.cAppContext, 
  AppConstants.arlst_RingPurchased);
 }
 }
 public int getItemPosition(Object object) 
 {
  return POSITION_NONE;
 }
 @Override
 public int getCount() 
 {
   return CONTENT.length;
 }
  @Override
  public CharSequence getPageTitle(int position) 
  {
    return CONTENT[position % CONTENT.length].toUpperCase();
  }
 }
}

activity_main.xml having only activity_main.xml只有

 <com.ringtone.TabPageIndicator
    android:id="@+id/indicator"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    />
<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_below="@+id/indicator"
    >
    </android.support.v4.view.ViewPager>

Please tell me how can i notify the other fragments listview while changing in any one. 请告诉我如何在更改任何一个时通知其他片段列表视图。

Please try to do stuff out of this branches: for example: 请尝试从这些分支中做一些事情:例如:

else 
{
 wrapper = (Wrapper) view.getTag();
}

wrapper.txtText.setText("Refreshed");

return view;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM