【发布时间】:2016-02-29 05:26:33
【问题描述】:
我正在尝试将项目加载到我的MainActivity 工具栏内的微调器。在MainActivity 内有一个名为HomeFragment 的片段。该片段包含SlidingTabLayout,一旦我单击不同的选项卡,我需要将不同的数据集加载到上述微调器。
这是它的样子:
我已经在MainActivity 中实现了向微调器添加数据的方法:
public void addItemsToSpinner(final Collection<String> collection) {
ArrayList<String> list = new ArrayList<>();
list.addAll(collection);
CustomSpinnerAdapter spinAdapter = new CustomSpinnerAdapter(getApplicationContext(), list);
subCategories_spinner.setAdapter(spinAdapter);
subCategories_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapter, View v, int position, long id) {
// On selecting a spinner item
String item = adapter.getItemAtPosition(position).toString();
// Showing selected spinner item
// Toast.makeText(getApplicationContext(), "Selected : " + item,
// Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
在我的HomeActivity 中,我将OnPageChangeLister 设置为SlidingTabLayout,如下所示:
mTabs.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (firstScrolled) {
// Here log-cat gives me I/Position: On page scrolled - 0 which means on stating app this line executed. But data not set to the spinner.
// Log.i("Position", "On page scrolled - " + position);
volleySubCatFilter("women");
((MainActivity) getActivity()).addItemsToSpinner(subs);//debug console subs (ArrayList) size given as 0 here
firstScrolled = false;
}
}
@Override
public void onPageSelected(int position) {
if (position == 0) {
// Log.i("Position", "On page selected - " + position);
volleySubCatFilter("women");
((MainActivity) getActivity()).addItemsToSpinner(subs);
}
if (position == 1) {
// Log.i("Position", "On page selected - " + position);
volleySubCatFilter("men");
((MainActivity) getActivity()).addItemsToSpinner(subs);
}
if (position == 2) {
// Log.i("Position", "On page selected - " + position);
volleySubCatFilter("household%20goods");
((MainActivity) getActivity()).addItemsToSpinner(subs);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
使用volleySubCatFilter("category_here"); 方法,我从凌空请求中检索数据到服务器,它工作正常。
我遇到的问题是第一次加载应用程序 WOMEN 选项卡被选中,但没有数据加载到微调器。但我尝试使用Log.i("Position", "On page scrolled - " + position);,一旦应用程序加载它就会给我I/Position: On page scrolled - 0 在我的日志猫中。但是数据没有加载。
调试行((MainActivity) getActivity()).addItemsToSpinner(subs) 告诉 0 个项目。一旦我按下另一个选项卡,它就会开始加载属于前一个选项卡的数据。示例:- 在应用加载后立即按 MEN 选项卡获取属于 WOMEN 选项卡的数据。然后我点击它开始加载数据属于 WOMEN 的任何选项卡> 选项卡。
如果我简要介绍这个问题,将数据加载到微调器是一个步骤 后面。
如果有人建议我摆脱这个错误的方法,将不胜感激。在此先感谢。
【问题讨论】:
标签: android android-fragments android-volley android-tablayout