【问题标题】:Update viewpager dynamically动态更新浏览器
【发布时间】:2017-09-25 13:45:28
【问题描述】:

我有一个 ViewPager。数据存储在数据库中。我想动态更新它。该元素必须立即消失,但它不起作用。在我调用方法 onCreate 后更新数据。我尝试了所有建议,但没有帮助。我做错了什么?请帮我找到解决办法。

TextPagerAdapter.java

public class TextPagerAdapter extends FragmentStatePagerAdapter {

List<String> data;

public TextPagerAdapter(FragmentManager fm, List<String> data) {
    super(fm);
    this.data = data;

}

@Override
public Fragment getItem(int i) {

    Fragment fragment = new ItemFragment();

    Bundle args = new Bundle();
    args.putString(ItemFragment.ARG_TEXT, data.get(i));
    args.putInt(ItemFragment.ARG_POSITION, i+1);
    args.putInt(ItemFragment.ARG_COUNT, getCount());

    fragment.setArguments(args);

    return fragment;

}

@Override
public int getCount() {

    return data.size();
}

public String getTextVP(int i) {
    return data.get(i);
}

@Override
public CharSequence getPageTitle(int position) {
    return "Item " + (position + 1);
}


@Override
public int getItemPosition(Object object) {
    return POSITION_NONE;
}
}

ItemFragment.java

public class ItemFragment extends Fragment {

public static final String ARG_TEXT = "item_text";
public static final String ARG_POSITION = "item_position";
public static final String ARG_COUNT = "item_count";
TextView text1, textCount;

@Override
public View onCreateView(LayoutInflater inflater,
                         ViewGroup container, Bundle savedInstanceState) {

    View rootView = inflater.inflate(
            R.layout.fragment, container, false);

    Bundle args = getArguments();

    text1 = (TextView) rootView.findViewById(R.id.text1);
    text1.setText(args.getString(ARG_TEXT));

    textCount = (TextView) rootView.findViewById(R.id.txtCount);
    textCount.setText(args.getInt(ARG_POSITION) + " / " + args.getInt(ARG_COUNT));

    return rootView;
}
}

StartAppScreen.java

public class StartAppScreen extends AppCompatActivity implements View.OnClickListener {

private DatabaseHelper mDBHelper;
private SQLiteDatabase mDb;
ViewPager mViewPager;
TextPagerAdapter mTextPagerAdapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.patters_layout);

    List<String> data = new ArrayList<>();
    mDBHelper = new DatabaseHelper(this);

    init();

    Intent intent = getIntent();
    String condition = intent.getStringExtra("condition");
    String column = intent.getStringExtra("column");
    Boolean allWords = intent.getBooleanExtra("allWords", false);

    data.addAll(getDataFromTable(mDb, column, condition, allWords));

    if (allWords) Collections.shuffle(data);

    mTextPagerAdapter = new TextPagerAdapter(
            getSupportFragmentManager(), data);

    mViewPager.setAdapter(mTextPagerAdapter);
}

@Override
public void onClick(View v) {

    switch (v.getId()) {

        case R.id.btnDel:
            String s = mTextPagerAdapter.getTextVP(mViewPager.getCurrentItem());
            /*Delete data from db*/
            mDb.delete(TABLE_NAME, WORD_ROW_NAME + "= ?", new String[] {s} );
            /*It is not work*/
            mTextPagerAdapter.notifyDataSetChanged();
            break;
    }
}


private void init() {

    try {
        mDBHelper.updateDataBase();
    } catch (IOException mIOException) {
        throw new Error("UnableToUpdateDatabase");
    }

    try {
        mDb = mDBHelper.getWritableDatabase();
    } catch (SQLException mSQLException) {
        throw mSQLException;
    }

    Button btnAdd = (Button) findViewById(R.id.btnAdd);
    btnAdd.setOnClickListener(this);
    Button btnDel = (Button) findViewById(R.id.btnDel);
    btnDel.setOnClickListener(this);
    mViewPager = (ViewPager) findViewById(R.id.pager);
}
}

【问题讨论】:

标签: android android-viewpager fragmentpageradapter android-pageradapter


【解决方案1】:

实际上,您不会更新 TextPagerAdapter 中的字符串列表。您仅在数据库中更新。再次获取数据并更改 mTextPagerAdapter 中 data 字段的值。

【讨论】:

  • 谢谢,它有效。在 mTextPagerAdapter.notifyDataSetChanged(); 之前我写了 data.remove(mViewPager.getCurrentItem());
猜你喜欢
  • 2014-06-16
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-07
相关资源
最近更新 更多