列表视图不刷新的片段,viewpager标签 [英] listview not refreshing in fragment with viewpager tabs
问题描述
我被困到用于片段内viewpager风格标签与列表视图的问题jakewharton的Android-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>
请告诉我如何可以通知其他片段的ListView而在任何一个改变。
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屋!