カスタムの水平ビューページャーを実装しています。私の意図は、ListViewの特定のテーブルのエントリにデータを入力することです。このメソッドは、データベースにあるテーブルの数を検出し、水平ビューページャーに同じ数のページを設定する必要があります。(1つのテーブルに対して1つのページ-各ページには、対応するテーブルのエントリを表示するための1つのListViewのみが含まれます)。
これが私の試みです。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewp);
MyPagerAdapter adapter = new MyPagerAdapter();
ViewPager myPager = (ViewPager) findViewById(R.id.threepageviewer);
myPager.setAdapter(adapter);
DbHelper helper = new DbHelper(this);
count = helper.countTables();
myPager.setCurrentItem(count);
temp = helper.countTables() - 1;
temp1 = helper.countTables() - 1;
}
これがページアダプタクラスです。
private class MyPagerAdapter extends PagerAdapter {
public int getCount() {
return count;
}
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = null;
if (position == count-1) {
view = inflater.inflate(R.layout.middle, null);
ListView list = (ListView) view.findViewById(R.id.listView1);
helper = new DbHelper(Listing.this);
String tabName = helper.getTableName(temp1);
dataset_cursor = helper.getAll(tabName);
startManagingCursor(dataset_cursor);
adapter = new NoteAdapter(dataset_cursor);
list.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
if (position < temp) {
temp--;
temp1--;
// int hg = temp - position;
// int tempo = temp - hg;
view = inflater.inflate(R.layout.left, null);
ListView list1 = (ListView) view.findViewById(R.id.listView1);
helper = new DbHelper(Listing.this);
String tabName = helper.getTableName(temp1);
dataset_cursor1 = helper.getAll(tabName);
startManagingCursor(dataset_cursor1);
adapter1 = new NoteAdapter(dataset_cursor1);
list1.setAdapter(adapter1);
adapter1.notifyDataSetChanged();
Toast.makeText(getBaseContext(), tabName, Toast.LENGTH_LONG);
temp--;
temp1--;
}
if (position > temp) {
temp++;
temp1++;
// int hg = position - temp;
// int tempo = temp - hg;
view = inflater.inflate(R.layout.right, null);
ListView list2 = (ListView) view.findViewById(R.id.listView1);
helper = new DbHelper(Listing.this);
String tabName = helper.getTableName(temp1);
dataset_cursor2 = helper.getAll(tabName);
startManagingCursor(dataset_cursor2);
adapter2 = new NoteAdapter(dataset_cursor2);
list2.setAdapter(adapter2);
adapter2.notifyDataSetChanged();
}
((ViewPager) collection).addView(view, 0);
return view;
}
最後のデータベーステーブルをデフォルトページにします。左にスワイプすると、最後から2番目のテーブルに移動します。これを試している間、私はほとんど必要なものを手に入れます。この問題を除いて。
END - TABLE6-(左スワイプ)-TABLE5-(左スワイプ)-TABLE5- (左スワイプ) -TABLE3-(左スワイプ)-TABLE2-(左スワイプ)-TABLE1- -終了
END - TABLE1-(右スワイプ)-TABLE2- (右スワイプ)-TABLE2- (右スワイプ) -TABLE3-(右スワイプ)-TABLE4-(右スワイプ)-TABLE5- -終了
私はそれを正しくやっています。ここでの間違いは何でしょうか。同じことを実装する他の方法はありますか?