0

私はアンドロイドプログラミングに慣れていないので、SQLiteデータベースの各行をビューページにロードする必要があります(SQLiteデータベースにはID、NAME、AGE、ADDRESSの各フィールドがあります)ので、各行にナビゲートすることができます左右にスワイプします。私はこれに適切な解決策を見つけることに失敗しています。私は今この問題を1週間解決しようとしています。ビューページにSQLiteデータをロードするには?

誰かが私を助けてくれたら幸いです。どうもありがとうございました!

+1

これまでに何を試みましたか? –

+0

左右のスワイプジェスチャーを使ってSQLiteレコードをナビゲートし、各フィールドをtextviewsにロードすることができます。 cursor.movetonext、cursor.movetopreviousなどを使用して各レコードを読み込むことができます。私は、ページをナビゲートする際に素晴らしいアニメーションを追加するviewpagerメソッドを使用するアプリケーションを見てきましたが、SQLiteデータをviewpagesにロードすることさえできません私はどのようにわかりません。あなたが私を助けてくれることを願います。 –

+0

ビューページを使用していくつかのコードで遊ぶことができました。ビューページの例を作成できますが、多くの例では固定数のページしか表示されません。私はSQLiteデータベースのデータに基づいて各ページからページ数とデータ数を設定する必要があります。 –

答えて

0

数多くの研究と試行の後、私は実用的な解決策を考え出すことができました。以下のコードはすべて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オブジェクトで行われます。

関連する問題