【发布时间】:2016-01-15 03:49:08
【问题描述】:
我的 android 中有 3 个滑动标签(A、B、C)。说到标签 c,我有一个函数 RetrieveData(),用于从 MySQL 检索数据并加载到 listView。
假设在 MySQL 中我只有一行数据,当谈到 c 时,数据将被加载到 listView 中(只有一个列表)。当我滑动到 Tab A 并再次滑动到 C 时,列表现在变为 2。
有没有办法让RetrieveData() 只调用一次?谢谢。
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View edit_details = inflater.inflate(R.layout.edit_work_details, container, false);
// EditDetails = new ArrayList<HashMap<String, String>>();
listViewUpdate = (ListView) edit_details.findViewById(R.id.listViewEdit);
totalHours=(TextView)edit_details.findViewById(R.id.hour);
setHasOptionsMenu(true);
Bundle bundle = this.getArguments();
if (getArguments() != null) {
ID = bundle.getString("ID");
RetrieveData(ID); // retrieve data from MySQL
}
Toast.makeText(getActivity(), "Details" + ID, Toast.LENGTH_LONG).show();
}
TabAdapter
public class TabsFragmentPagerAdapter extends FragmentPagerAdapter {
public TabsFragmentPagerAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
@Override
public Fragment getItem(int index) {
// TODO Auto-generated method stub
if(index == 0) {
Fragment fragment=new A();
Bundle bundle = new Bundle();
bundle.putString("ID", Edit.ID);
fragment.setArguments(bundle);
return fragment;
}
if(index == 1) {
Fragment fragment = new B();
Bundle bundle = new Bundle();
bundle.putString("ID", Edit.ID);
fragment.setArguments(bundle);
return fragment;
}
if(index == 2) {
Fragment fragment = new C();
Bundle bundle = new Bundle();
bundle.putString("ID", Edit.ID);
fragment.setArguments(bundle);
return fragment;
}
return null;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 3;
}
}
ViewPager 代码
public class ActivityB extends ActionBarActivity implements ActionBar.TabListener {
private ViewPager viewPager;
private ActionBar actionBar;
private TabsFragmentPagerAdapter tabsAdapter;
private String[] item = new String[]{"Information","Work Force","Work Details"};
private String id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
// id=getIntent().getExtras().getString("ID");
viewPager = (ViewPager) findViewById(R.id.viewPager);
tabsAdapter = new TabsFragmentPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(tabsAdapter);
actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
for(int i=0; i<4; i++){
actionBar.addTab(actionBar.newTab().setText(item[i]).setTabListener(this));
}
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int arg) {
// TODO Auto-generated method stub
actionBar.setSelectedNavigationItem(arg);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
}
@Override
public void onTabReselected(ActionBar.Tab arg0, FragmentTransaction arg1) {
// TODO Auto-generated method stub
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction arg1) {
// TODO Auto-generated method stub
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(ActionBar.Tab arg0, FragmentTransaction arg1) {
// TODO Auto-generated method stub
}
}
这是我的标签 c
再次滑动到 A 和 C 后
好像又在调用RetrieveData。
【问题讨论】:
-
@playmaker420 再次检查
-
retrieveData() 函数的代码?顺便说一句,函数名称以小写开头是一种常见的做法。只有类名应该以 Big 开头。
-
如何从活动中调用这个片段
-
@playmaker420 我使用滑动标签
-
你能把那个代码贴出来
标签: android json listview tabs