많은 수의 연구와 시도 끝에 필자는 작동하는 해결책을 내놓을 수있었습니다. 아래 코드는 모두 MainActivity에 나열되어 있습니다. 꽤 직설적 인. 나는 이것이 다른 사람들을 도와주기를 바랍니다. 궁금한 점이 있으면 의견을 남기십시오.
public class MainActivity extends AppCompatActivity {
float x1,x2;
float y1, y2;
int currentPage;
ViewPager mViewPager;
String ID;
List<String> listID = new ArrayList<String>();
List<String> listName = new ArrayList<String>();
List<String> listMtrno = new ArrayList<String>();
String SearchString = null;
CursorPagerAdapter mAdapter;
Cursor cursor;
DatabaseHelper databaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
getSupportActionBar().setDisplayShowHomeEnabled(true);
databaseHelper = new DatabaseHelper(this);
setContentView(R.layout.pager);
databaseHelper = new DatabaseHelper(MainActivity.this);
cursor = databaseHelper.fetch();
mAdapter = new CursorPagerAdapter(this, cursor);
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mAdapter);
mViewPager.setPageTransformer(true, new ZoomOutPageTransformer());
if (extras != null)
{
SearchString = extras.getString("SearchFlag");
if (SearchString != null) {
mViewPager.setCurrentItem(Integer.parseInt(SearchString) - 1);
} else {
if (cursor.moveToFirst()){
while(!cursor.isAfterLast()){
cursor.moveToNext();
}
}
}
Log.d("MainActivity", "Search(A): " + SearchString);
}
}
private class CursorPagerAdapter extends PagerAdapter {
private Cursor cursor;
private LayoutInflater inflater;
public CursorPagerAdapter(Context context, Cursor cursor) {
Log.d("Main Activity", "MyCursorPagerAdapter.onCreate()");
this.cursor = cursor;
this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public void swapCursor(Cursor cursor) {
//if(cursor != null) {
Log.d("Main Activity", "swapCursor().");
this.cursor = cursor;
//notifyDataSetChanged();
//}
}
@Override
public int getCount() {
if(cursor == null) {
return 0;
} else {
return cursor.getCount();
}
}
@Override
public void destroyItem(ViewGroup view, int position, Object object) {
cursor.moveToPosition(position);
(view).removeView((LinearLayout) object);
}
@Override
public Object instantiateItem(ViewGroup view, int position) {
position = position % cursor.getCount();
cursor.moveToPosition(position);
LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.fragment_listener, null);
TextView f1_recno = layout.findViewById(R.id.TV_recno);
TextView f1_acctno = layout.findViewById(R.id.TV_acctno);
TextView f1_route = layout.findViewById(R.id.TV_route);
TextView fl_name = layout.findViewById(R.id.TV_name);
TextView fl_mtrno = layout.findViewById(R.id.TV_mtrno);
f1_recno.setText((cursor.getPosition() + 1) + " of " + cursor.getCount() + " records");
f1_acctno.setText(cursor.getString(cursor.getColumnIndex("ACCTNO")));
f1_route.setText(cursor.getString(cursor.getColumnIndex("ROUTE")));
fl_name.setText(cursor.getString(cursor.getColumnIndex("NAME")));
fl_mtrno.setText(cursor.getString(cursor.getColumnIndex("MTRNO")));
(view).addView(layout);
return layout;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
}
데이터베이스에서 커서 객체로 테이블을로드하고이를 CursorPagerAdapter에 연결합니다. 각 행 데이터의로드는 InstantiateItem 객체에서 수행됩니다.
지금까지 해보신 것은 무엇입니까? –
왼쪽 및 오른쪽 스 와이프 제스처를 사용하고 각 필드를 textviews에로드하여 SQLite 레코드를 탐색 할 수 있습니다. cursor.movetonext, cursor.movetoprevious 등을 사용하여 각 레코드를로드 할 수 있습니다. 페이지를 탐색 할 때 훌륭한 애니메이션을 추가하는 viewpager 메소드를 사용하는 응용 프로그램을 보았습니다. 그러나 SQLite 데이터를 viewpages로로드하는 것과는 거리가 멀었습니다. 나는 어떻게 확신 할 수 없다. 당신이 나를 도울 수 있기를 바랍니다. –
뷰 페이지를 사용하여 코드를 재생할 수 있었고 뷰 페이지 예제를 만들 수 있었지만 많은 예제에서는 고정 된 수의 페이지 만 보여줍니다. 내 SQLite 데이터베이스의 데이터를 기반으로 각 페이지의 페이지 수와 데이터를 설정해야합니다. –