ViewPager становится пустым при нажатии на элемент списка - PullRequest
1 голос
/ 27 апреля 2019

У меня есть таблица, как показано ниже.Моя проблема: в виде списка отображаются три списка

Letter

Number

Word

Но когда я нажимаю налюбой элемент списка, просмотр просмотров страниц пейджером показывает, но остается пустым, данных там нет.а также не показывает заголовок страницы.В Logcat ошибки не отображаются.

enter image description here

Это 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);
        }
});

Это действие SwipeNav

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

Bundle args = getArguments();
((TextView) rootView.findViewById(R.id.text1)).setText(args.getString(ARG_OBJECT));
return rootView;

1 Ответ

0 голосов
/ 28 апреля 2019

Я решил свою проблему.

Для отображения данных в SwipeNav Activity данные должны передаваться из ListNavAdapter в ListSwipePagerAdapter.Но намерение было отправлено в SwipeNav.HEADER не отображается в ListSwipePagerAdapter.Итак, ViewPager становится пустым.

Я решил проблему с помощью Shared Preference.

...