繁体   English   中英

单击列表项时,ViewPager变为空白

[英]ViewPager becomes blank when click on list item

我有一张下面的桌子。 我的问题是:在列表视图中显示三个列表

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

这是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;

我已经解决了我的问题。

为了在SwipeNav活动中显示数据,数据应从ListNavAdapter传递到ListSwipePagerAdapter。 但是意图已发送到SwipeNav。 HEADER未显示在ListSwipePagerAdapter中。 因此,ViewPager变为空白。

我已经解决了使用共享首选项的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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