简体   繁体   中英

ViewPager becomes blank when click on list item

I have a table like below. My problem is : in the list view shows three list

Letter

Number

Word

But when I click on the any list item, view pager swipe views shows but remains blank, no data there. and also no page title shows. In the Logcat no error shows.

在此处输入图片说明

This is 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);
        }
});

This is SwipeNav activity

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);

This is from 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);
}

This is AFragment class

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

I have solved my problem.

For showing data in SwipeNav Activity, data should pass from ListNavAdapter to ListSwipePagerAdapter. But intent was sent to SwipeNav. HEADER was not showing in the ListSwipePagerAdapter. So ViewPager becomes blank.

I have solved the problem using Shared Preference.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM