列表视图不刷新的片段,viewpager标签 [英] listview not refreshing in fragment with viewpager tabs

查看:227
本文介绍了列表视图不刷新的片段,viewpager标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我被困到用于片段内viewpager风格标签与列表视图的问题jakewharton的Andr​​oid-ViewPagerIndicator,鉴于......例如在github上。

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.

我使用的是相同的lib中三个选项卡各有一个列表视图相同的数组列表设置为那里的适配器。

i am using the same lib for three tabs each having a list view with same arraylist set to there adapters.

我使用3这类片段的所有工作正常,但我希望我的列表中的所有其他片段被更新,当我做出改变其中任何一个,它不会反映的变化。 我想,如果我在列表中三个选项卡的任何一个选中的复选框(我更新的数据库,我的ArrayList的值)另外两个列表视图各自的片段里面应该反思的变化,请帮助我在此。  请帮我在这,任何帮助,将AP preciated

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. 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. 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只具有

activity_main.xml having only

 <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>

请告诉我如何可以通知其他片段的Lis​​tView而在任何一个改变。

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;
}

这篇关于列表视图不刷新的片段,viewpager标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆