Nach vielen Recherchen und Versuchen konnte ich mir eine funktionierende Lösung einfallen lassen. Der folgende Code ist in der MainActivity aufgelistet. Ziemlich einfach. Ich hoffe, das hilft anderen Menschen da draußen. Hinterlasse einen Kommentar, wenn du irgendwelche Fragen hast.
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;
}
}
lade ich eine Tabelle aus einer Datenbank in eine Cursor-Objekt, und schließen Sie es an meine CursorPagerAdapter. Das Laden der einzelnen Zeilendaten erfolgt im InstantiateItem-Objekt.
Was hast du bisher versucht? –
Ich kann mit den linken und rechten Wischgesten durch SQLite-Datensätze navigieren und jedes Feld in Textansichten laden. Ich kann jeden Datensatz mit cursor.movetonext, cursor.movetoprevious usw. laden. Ich habe Anwendungen gesehen, die die viewpager-Methode verwenden, die beim Navigieren durch Seiten großartige Animationen hinzufügt, aber ich habe kein Glück, SQLite-Daten in Ansichtsseiten zu laden Ich bin mir nicht sicher wie. Hoffe, du kannst mir helfen. –
Ich konnte mit einigen Codes in der Verwendung von Viewpager spielen und ich bin in der Lage, ein Viewpager-Beispiel zu erstellen, aber viele Beispiele dort nur zeigt es mit einer festen Anzahl von Seiten. Ich muss die Anzahl der Seiten und die Daten von jeder Seite basierend auf den Daten in meiner SQLite-Datenbank festlegen. –