0

Ich bin neu in Android-Programmierung und ich muss jede Zeile aus einer SQLite-Datenbank in einen Viewpager laden (Meine SQLite-Datenbank enthält Felder "ID, NAME, Alter, ADRESSE"), so dass ich zu jeder Zeile navigieren kann indem Sie nach links und rechts wischen. Es gelingt mir nicht, die richtige Lösung dafür zu finden. Ich habe versucht, dieses Problem seit einer Woche zu lösen.Wie lade ich SQLite-Daten in einen Viewpager?

Es wäre ein Segen, wenn mir jemand dabei helfen könnte. Vielen Dank!

+1

Was hast du bisher versucht? –

+0

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. –

+0

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. –

Antwort

0

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.

Verwandte Themen