0

안드로이드 프로그래밍에 익숙하지 않아 SQLite 데이터베이스의 각 행을 뷰 페이지 (SQLite 데이터베이스에 "ID, NAME, AGE, ADDRESS"필드가 있음)에로드해야 각 행을 탐색 할 수 있습니다 왼쪽 및 오른쪽으로 스 와이프하여 나는 이것에 대한 올바른 해결책을 찾는데 실패했다. 나는 일주일 동안이 문제를 해결하려고 노력 해왔다.SQLite 데이터를 뷰 페이지에로드하는 방법은 무엇입니까?

누군가 나를 도와 줄 수 있다면 축복이 될 것입니다. 고마워요!

+1

지금까지 해보신 것은 무엇입니까? –

+0

왼쪽 및 오른쪽 스 와이프 제스처를 사용하고 각 필드를 textviews에로드하여 SQLite 레코드를 탐색 할 수 있습니다. 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 객체에서 수행됩니다.