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);
}
}
[Update ViewPager를 동적으로 복제 할 수 있습니까?] (https://stackoverflow.com/questions/10849552/update-viewpager-dynamically) –
시도했지만 작동하지 않았습니다. –