单击列表项时 ViewPager 变为空白
ViewPager becomes blank when click on list item
我有一个 table 如下所示。我的问题是:在列表视图中显示三个列表
Letter
Number
Word
但是当我点击任何列表项时,查看寻呼机滑动视图显示但仍然空白,那里没有数据。也没有页面标题显示。在 Logcat 中没有错误显示。
这是 ListNavAdapter
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ArrayAdapter arrayAdapter;
ArrayList<String> listItem = new ArrayList<>();
final ListView listView = (ListView) view.findViewById(R.id.list);
SQLiteDatabase sqLiteDatabase = SqliteDatabase.getInstance(this.getContext()).getWritableDatabase();
Cursor cursor = sqLiteDatabase.rawQuery("SELECT HEADER FROM MyData group by HEADER", new String[]{});
if (cursor.getCount() == 0) {
Toast.makeText(getActivity(), "No Data to show", Toast.LENGTH_LONG).show();
} else {
while (cursor.moveToNext()) {
listItem.add(cursor.getString(0));
}
arrayAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, listItem);
listView.setAdapter(arrayAdapter);
}
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent=new Intent(getActivity(), SwipeNav.class);
intent.putExtra(ID_EXTRA, (String)adapterView.getItemAtPosition(i));
startActivity(intent);
}
});
这是 SwipeNavactivity
if (getIntent().hasExtra(ListNavAdapter.ID_EXTRA)) {
String myInt = (getIntent().getStringExtra(ListNavAdapter.ID_EXTRA));
listSwipePagerAdapter = new ListSwipePagerAdapter(getSupportFragmentManager(), this);
viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(listSwipePagerAdapter);
这是来自 ListSwipePagerAdapter
public Fragment getItem(int i) {
String myInt=ListNavAdapter.ID_EXTRA;
ArrayList<String> listItem = new ArrayList<String>();
SQLiteDatabase sqLiteDatabase = SqliteDatabase.getInstance(context).getWritableDatabase();
Cursor cursor = sqLiteDatabase.rawQuery("SELECT NAME FROM MyData WHERE HEADER=?", new String[]{"myInt"});
if (cursor.getCount() == 0) {
} else {
while (cursor.moveToNext()) {
listItem.add(cursor.getString(0));
}
}
Object[] mStringArray = listItem.toArray();
Fragment fragment = new AFragment();
Bundle args = new Bundle();
assert mStringArray != null;
args.putString(AFragment.ARG_OBJECT, (String)mStringArray[i]);
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
String myInt=ListNavAdapter.ID_EXTRA;
ArrayList<String> listItem = new ArrayList<>();
SQLiteDatabase sqLiteDatabase = SqliteDatabase.getInstance(context).getWritableDatabase();
Cursor cursor = sqLiteDatabase.rawQuery("SELECT NAME FROM MyData WHERE HEADER=?", new String[]{"myInt"});
while (cursor.moveToNext()) {
listItem.add(cursor.getString(cursor.getColumnIndex("NAME")));
}
return listItem.size();
}
@Override
public CharSequence getPageTitle(int position) {
//return tabTitleArray[position];
return "Object " + (position + 1);
}
这是 AFragment class
Bundle args = getArguments();
((TextView) rootView.findViewById(R.id.text1)).setText(args.getString(ARG_OBJECT));
return rootView;
我的问题已经解决了
为了在 SwipeNav 中显示数据 Activity,数据应该从 ListNavAdapter 传递到 ListSwipePagerAdapter。但是意图被发送到 SwipeNav。 HEADER 未显示在 ListSwipePagerAdapter 中。所以 ViewPager 变成空白。
我已经使用共享首选项解决了这个问题。
我有一个 table 如下所示。我的问题是:在列表视图中显示三个列表
Letter
Number
Word
但是当我点击任何列表项时,查看寻呼机滑动视图显示但仍然空白,那里没有数据。也没有页面标题显示。在 Logcat 中没有错误显示。
这是 ListNavAdapter
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ArrayAdapter arrayAdapter;
ArrayList<String> listItem = new ArrayList<>();
final ListView listView = (ListView) view.findViewById(R.id.list);
SQLiteDatabase sqLiteDatabase = SqliteDatabase.getInstance(this.getContext()).getWritableDatabase();
Cursor cursor = sqLiteDatabase.rawQuery("SELECT HEADER FROM MyData group by HEADER", new String[]{});
if (cursor.getCount() == 0) {
Toast.makeText(getActivity(), "No Data to show", Toast.LENGTH_LONG).show();
} else {
while (cursor.moveToNext()) {
listItem.add(cursor.getString(0));
}
arrayAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, listItem);
listView.setAdapter(arrayAdapter);
}
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent=new Intent(getActivity(), SwipeNav.class);
intent.putExtra(ID_EXTRA, (String)adapterView.getItemAtPosition(i));
startActivity(intent);
}
});
这是 SwipeNavactivity
if (getIntent().hasExtra(ListNavAdapter.ID_EXTRA)) {
String myInt = (getIntent().getStringExtra(ListNavAdapter.ID_EXTRA));
listSwipePagerAdapter = new ListSwipePagerAdapter(getSupportFragmentManager(), this);
viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(listSwipePagerAdapter);
这是来自 ListSwipePagerAdapter
public Fragment getItem(int i) {
String myInt=ListNavAdapter.ID_EXTRA;
ArrayList<String> listItem = new ArrayList<String>();
SQLiteDatabase sqLiteDatabase = SqliteDatabase.getInstance(context).getWritableDatabase();
Cursor cursor = sqLiteDatabase.rawQuery("SELECT NAME FROM MyData WHERE HEADER=?", new String[]{"myInt"});
if (cursor.getCount() == 0) {
} else {
while (cursor.moveToNext()) {
listItem.add(cursor.getString(0));
}
}
Object[] mStringArray = listItem.toArray();
Fragment fragment = new AFragment();
Bundle args = new Bundle();
assert mStringArray != null;
args.putString(AFragment.ARG_OBJECT, (String)mStringArray[i]);
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
String myInt=ListNavAdapter.ID_EXTRA;
ArrayList<String> listItem = new ArrayList<>();
SQLiteDatabase sqLiteDatabase = SqliteDatabase.getInstance(context).getWritableDatabase();
Cursor cursor = sqLiteDatabase.rawQuery("SELECT NAME FROM MyData WHERE HEADER=?", new String[]{"myInt"});
while (cursor.moveToNext()) {
listItem.add(cursor.getString(cursor.getColumnIndex("NAME")));
}
return listItem.size();
}
@Override
public CharSequence getPageTitle(int position) {
//return tabTitleArray[position];
return "Object " + (position + 1);
}
这是 AFragment class
Bundle args = getArguments();
((TextView) rootView.findViewById(R.id.text1)).setText(args.getString(ARG_OBJECT));
return rootView;
我的问题已经解决了
为了在 SwipeNav 中显示数据 Activity,数据应该从 ListNavAdapter 传递到 ListSwipePagerAdapter。但是意图被发送到 SwipeNav。 HEADER 未显示在 ListSwipePagerAdapter 中。所以 ViewPager 变成空白。
我已经使用共享首选项解决了这个问题。