final String[] genre = {"a", "b", "c", "d", "e","f","g","h","i","j" };
final String[] genre1 = {"...","0","1","2"};
final String[] genre2 = {"...","3","4","5"};
static int listint = 0;
...
@Override
public Object instantiateItem(ViewGroup container, int position) {
if(position==0) {
View view = getActivity().getLayoutInflater().inflate
(R.layout.pager_item_test, container, false);
container.addView(view);
ListView ListViewOnScreen = (ListView)container.findViewById(R.id.ListViewOnScreen);
if (listint == 0) {
ArrayAdapter arrayadaptermain = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, genre);
ListViewOnScreen.setAdapter(arrayadaptermain);
ListViewOnScreen.setOnItemClickListener(onitemclicklistenermain);
} else if (listint == 1) {
ArrayAdapter arrayadapter1 = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, genre1);
ListViewOnScreen.setAdapter(arrayadapter1);
ListViewOnScreen.setOnItemClickListener(onitemclicklistener1);}
return view;
}
...
}
public AdapterView.OnItemClickListener onitemclicklistenermain = new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long l_position) {
String tv = (String)parent.getAdapter().getItem(position);
Toast.makeText(getActivity(), tv + " printed from main, listint = " + listint, Toast.LENGTH_SHORT).show();
switch(position){
case 0: listint = 1; break;
}}};
public AdapterView.OnItemClickListener onitemclicklistener1 = new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long l_position) {
String tv = (String)parent.getAdapter().getItem(position);
Toast.makeText(getActivity(), tv + " printed from 1, listint = " + listint, Toast.LENGTH_SHORT).show();
switch(position){
case 0: listint = 0; break;
}}};`
这是SlidingTabsBasicFragment(来自SlidingTabsBasic)的一部分,其页面是listview。
我正试图让这个程序像这样:
- 首先,ListViewOnScreen显示String []流派。
- 当ListViewOnScreen显示String []类型时,单击位置0(“a”)将使ListViewOnScreen显示String [] genre1。
- 当ListViewOnScreen显示String [] genre1时,单击位置0(此处为“...”)将使ListViewOnScreen再次显示String []类型。
我认为这段代码可行。但无论listint是什么,ListViewOnScreen都会始终显示流派(而不是genre1)。
例)第一次点击'a': Toast:从main打印,listint = 0 数组没有变化,仍显示“a”,“b”,......
Clicking 'a' second time:
Toast: a printed from main, listint = 1
Still No change in array.
如何更改代码才能正常工作?
答案 0 :(得分:0)
我想将此作为评论发布,但我没有必要的帖子发布,所以我将其添加为答案。从您在此处发布的代码看来,您似乎正在使用PageAdapter instantiateItem函数。好吧,从输出中可以看出,instantiateItem函数只为一个页面调用一次,该页面设置了具有内容genre []并显示它们的初始适配器。下次按“a”时,页面将被重用而不是新创建,因此不会再次调用instantiateitem函数。那么,instantiateItem可能不是切换适配器的地方吗?