Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 557
Записей в блоге: 1
#1

На каждой странице ViewPager'а должен отображаться свой ListFragment данные для которого берутся из базы - Программирование Android

24.05.2015, 08:01. Просмотров 1768. Ответов 42
Метки нет (Все метки)

Помогите запустить, пишу приложение в котором на каждой странице ViewPager'а должен отображаться свой ListFragment данные для которого берутся из базы, вот так вижу этот фрагмент:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import java.util.concurrent.TimeUnit;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.MenuItem;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.support.v4.app.LoaderManager;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
 
public class FirstFragment extends ListFragment implements LoaderCallbacks<Cursor>{
 
    private Context context;
    public DB db;
    SimpleCursorAdapter scAdapter;
    private Cursor cursor;
    ListView lvData;
    String arg=null;
 
    /** Handle the results from the voice recognition activity. */
    
    @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
          Bundle savedInstanceState) {
        return inflater.inflate(R.layout.first, null);
      }
      @Override
      public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        
        db = new DB(context);
        db.open();
        
        // формируем столбцы сопоставления
                String[] from = new String[] {  DB.COLUMN_IMG, DB.COLUMN_TXT };
                int[] to = new int[] { R.id.ivImg, R.id.tvText };
                // создааем адаптер и настраиваем список
                
scAdapter = new SimpleCursorAdapter(this, R.layout.item, cursor, from, to);
            //  lvData = (ListView) findViewById(R.id.listView1);
                lvData.setAdapter(scAdapter);
                // создаем лоадер для чтения данных
                getActivity().getSupportLoaderManager().initLoader(0, null, this);
 
      }
    @Override
    public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
        // TODO Auto-generated method stub
        return null;
    }
    @Override
    public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
        // TODO Auto-generated method stub
        
    }
    @Override
    public void onLoaderReset(Loader<Cursor> arg0) {
        // TODO Auto-generated method stub
        
    }
 
}
сейчас подчеркивает
Java
1
scAdapter = new SimpleCursorAdapter(this, R.layout.item, cursor, from, to);
пишет "The constructor SimpleCursorAdapter(FirstFragment, int, Cursor, String[], int[]) is undefined"
что это может означать?

и вообще правильно ли я это понимаю или нужно как-то по-другому делать?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2015, 08:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос На каждой странице ViewPager'а должен отображаться свой ListFragment данные для которого берутся из базы (Программирование Android):

Необходимо в RichTextBox занести несколько строк и первый символ каждой строки должен иметь свой цвет - Visual Basic
День добрый. Вопрос: Необходимо в RichTextBox занести 3 (например) строки и первый символ каждой строки должен иметь свой цвет. Например, ...

как сделать докумет с помощью которого паролироавался на каждой странице был пароль - C (СИ)
как сделать докумет с помощью которого паролироавался на каждой странице был пароль мой сайт полностью каждая страница при нажатии на...

Не могу понять из какого регистра берутся данные для отчета - 1С
1С 7.7 Торговля + склад, редакция 9.2, отчет по продажам ТМЦ. Меня очень интересует колонка &quot;Количество, еденица&quot;. Из какого...

Создать сайт, данные которого автоматически брались бы из базы данных - Web
Здравствуйте! Необходимо создать сайт, данные которого автоматически брались бы из базы данных. Подскажите как лучше это осуществить.

Как создать контрол, который при конструировании не должен отображаться на форме? - Visual Basic .NET
Может кто подскажет, как создать контрол, который при конструировании не должен отображаться на форме, а должен находиться внизу в...

Как сделать чтобы у каждой строки был свой список. Например, есть маршрутка, у каждой из нее есть свой список - SQL Server
Как сделать чтобы у каждой строки был свой список. Например, есть маршрутка, у каждой из нее есть свой список остановок. Остановки не...

42
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 557
Записей в блоге: 1
01.06.2015, 10:59  [ТС] #31
Rube,
проблемные участки
просто я их не вижу, поэтому не знаю что класть...

FirstFragment:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
public class FirstFragment extends Fragment implements
        LoaderCallbacks<Cursor> {
 
    private Context context;
    public DB db;
    public static SimpleCursorAdapter scAdapter;
    private Cursor cursor;
    ListView lvData;
    static String arg = null;
    private static final int CM_DELETE_ID = 1;
    DBHelper dbHelper;
 
    /** Handle the results from the voice recognition activity. */
//  @Override
//    public View onCreateView(LayoutInflater inflater, ViewGroup container,
//        Bundle savedInstanceState) {
//      return inflater.inflate(R.layout.first, null);
//    
//      
//     // return view;
//    }
    
    @SuppressWarnings("deprecation")
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        db = new DB(getActivity());
        db.open();
 
        // получаем курсор
        cursor = db.getAllData(arg);
        String count = String.valueOf(cursor.getCount());
        Toast tost = Toast.makeText(getActivity(),
                count, Toast.LENGTH_SHORT);
        tost.setGravity(50, 200, 30);
        tost.show();
        //CursorLoader cursorLoader = new CursorLoader(getActivity(), android.provider.Browser.BOOKMARKS_URI, null, null, null, null);
 
        //getActivity().startManagingCursor(cursor);
 
        // формируем столбцы сопоставления
        String[] from = new String[] {  DB.COLUMN_IMG, DB.COLUMN_TXT };
        int[] to = new int[] { R.id.ivImg, R.id.tvText };
 
        // создааем адаптер и настраиваем список
 
scAdapter = new SimpleCursorAdapter(getActivity(), R.layout.item, cursor, from, to, 0);
//      scAdapter = new SimpleCursorAdapter(getActivity(), R.layout.item, cursor, from,
//              to);
        lvData = (ListView) getView().findViewById(R.id.listView1);
        lvData.setAdapter(scAdapter);
        //getLoaderManager().initLoader(0, null, this);
        getActivity().getSupportLoaderManager().initLoader(0, null, this);
 
    }
    // обработка нажатия кнопки
      public void onButtonClick(View view) {
        // добавляем запись
        db.addRec("sometext " + (scAdapter.getCount() + 1), R.drawable.ic_launcher, "да");
        // получаем новый курсор с данными
        getActivity().getSupportLoaderManager().getLoader(0).forceLoad();
      }
      
      public void onCreateContextMenu(ContextMenu menu, View v,
          ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(0, CM_DELETE_ID, 0, R.string.delete_record);
      }
 
      public boolean onContextItemSelected(MenuItem item) {
        if (item.getItemId() == CM_DELETE_ID) {
          // получаем из пункта контекстного меню данные по пункту списка
          AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item
              .getMenuInfo();
          // извлекаем id записи и удаляем соответствующую запись в БД
          db.delRec(acmi.id);
          // получаем новый курсор с данными
          getActivity().getSupportLoaderManager().getLoader(0).forceLoad();
          return true;
        }
        return super.onContextItemSelected(item);
      }
 
    @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle bndl) {
        return new MyCursorLoader(getActivity(), db);
    }
 
    @Override
    public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
        scAdapter.swapCursor(cursor);
    }
 
    @Override
    public void onLoaderReset(Loader<Cursor> loader) {
        // TODO Auto-generated method stub
 
    }
 
     class MyCursorLoader extends CursorLoader {
 
        DB db;
 
        public MyCursorLoader(Context context, DB db) {
            super(context);
            this.db = db;
        }
 
        @Override
        public Cursor loadInBackground() {
            Cursor cursor = db.getAllData(arg);
            try {
                TimeUnit.SECONDS.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return cursor;
        }
 
    }
 
    public void onDestroy() {
        super.onDestroy();
        // закрываем подключение при выходе
        db.close();
    }
}


MainActivity
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
public class MainActivity extends ActionBarActivity
        implements NavigationDrawerFragment.NavigationDrawerCallbacks {
 
   
    private NavigationDrawerFragment mNavigationDrawerFragment;
 
   
    private CharSequence mTitle;
 
//_____________________________________________________________________________________________________
 
    public static final int FRAGMENTS = 3;
 
  static final String TAG = "myLogs";
  static final int PAGE_COUNT = 10;
 
private static final Context Context = null;
  
//  private String[] mCatTitles;
//  private ListView mDrawerList;
  public DB db;
  ViewPager pager;
  PagerAdapter pagerAdapter;
  private Cursor cursor;
  static String arg = null;
  static String count = null;
  //_____________________________________________________________________________________________________
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 //       db = new DB(this);
//      db.open();
        
    //  cursor = db.getAllData(arg);
    //  count = String.valueOf(cursor.getCount());
 // Toast tost = Toast.makeText(getApplicationContext(),
 //             count, Toast.LENGTH_SHORT);
 //     tost.setGravity(50, 200, 30);
//      tost.show();
        mNavigationDrawerFragment = (NavigationDrawerFragment)
                getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
        mTitle = getTitle();
 
        // Set up the drawer.
        mNavigationDrawerFragment.setUp(
                R.id.navigation_drawer,
                (DrawerLayout) findViewById(R.id.drawer_layout));
//        
//        _fragments.add(FRAGMENT_ONE, new FirstFragment());
//        _fragments.add(FRAGMENT_TWO, new SecondFragment());
//        _fragments.add(FRAGMENT_THREE, new TherdFragment());
        
        pager = (ViewPager) findViewById(R.id.pager);
        pagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
        pager.setAdapter(pagerAdapter);
 
//        pager.setOnPageChangeListener(new OnPageChangeListener()
//        {
//
//          @Override
//          public void onPageSelected(int position)
//          {
//            Log.d(TAG, "onPageSelected, position = " + position);
//          }
//
//          @Override
//          public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
//          {
//          }
//
//          @Override
//          public void onPageScrollStateChanged(int state)
//          {
//          }
//        });
       
    }
//---------------end onCreate------------
    @Override
    public void onNavigationDrawerItemSelected(int position) {
        // update the main content by replacing fragments
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.container, PlaceholderFragment.newInstance(position + 1))
                .commit();
    }
//----------Action of String------
    public void onSectionAttached(int number) {
        switch (number) {
            case 1:
                mTitle = getString(R.string.title_section1);
                break;
            case 2:
                mTitle = getString(R.string.title_section2);
                break;
            case 3:
                mTitle = getString(R.string.title_section3);
                break;
        }
    }
//---------------ActionBar------------------------
    public void restoreActionBar() {
        ActionBar actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
        actionBar.setDisplayShowTitleEnabled(true);
        actionBar.setTitle(mTitle);
    }
 
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        if (!mNavigationDrawerFragment.isDrawerOpen()) {
            // Only show items in the action bar relevant to this screen
            // if the drawer is not showing. Otherwise, let the drawer
            // decide what to show in the action bar.
            getMenuInflater().inflate(R.menu.main, menu);
            restoreActionBar();
            return true;
        }
        return super.onCreateOptionsMenu(menu);
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
  //---------END------ActionBar------------------------
   
    public static class PlaceholderFragment extends Fragment {
       
        private static final String ARG_SECTION_NUMBER = "section_number";
 
      
        public static PlaceholderFragment newInstance(int sectionNumber) {
            PlaceholderFragment fragment = new PlaceholderFragment();
            Bundle args = new Bundle();
            args.putInt(ARG_SECTION_NUMBER, sectionNumber);
            fragment.setArguments(args);
            return fragment;
        }
 
        public PlaceholderFragment() {
        }
 
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);
            return rootView;
        }
 
        @Override
        public void onAttach(Activity activity) {
            super.onAttach(activity);
            ((MainActivity) activity).onSectionAttached(
                    getArguments().getInt(ARG_SECTION_NUMBER));
        }
    }
    //--------------end NavDr and ActionBar------------
    private class MyFragmentPagerAdapter extends FragmentStatePagerAdapter
    {
 
      public MyFragmentPagerAdapter(FragmentManager fm) {
        super(fm);
      }
 
      @Override
      public Fragment getItem(int position)
      {
        //return _fragments.get(position);
        return PageFragment.newInstance(position);
      }
 
      @Override
      public int getCount()
      {
        return FRAGMENTS;
        // return PAGE_COUNT;
      }
 
      // v2
      @Override
      public CharSequence getPageTitle(int position)
      {
        return "Title " + position;
      }
      
     
 
    }
//--------------END----MyFragmentPagerAdapter----------
}


PageFragment
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
public class PageFragment extends Fragment
{
  static final String TAG = "myLogs";
 
  static final String ARGUMENT_PAGE_NUMBER = "arg_page_number";
  static final String SAVE_PAGE_NUMBER = "save_page_number";
 
  
  public DB db;
  int pageNumber;
  int backColor;
 
  static PageFragment newInstance(int page)
  {
    PageFragment pageFragment = new PageFragment();
    Bundle arguments = new Bundle();
    arguments.putInt(ARGUMENT_PAGE_NUMBER, page);
    pageFragment.setArguments(arguments);
    return pageFragment;
  }
 
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    pageNumber = getArguments().getInt(ARGUMENT_PAGE_NUMBER);
    Log.d(TAG, "onCreate: " + pageNumber);
 
    Random rnd = new Random();
    backColor = Color.argb(40, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
 
    int savedPageNumber = -1;
    if (savedInstanceState != null)
    {
        
        
      savedPageNumber = savedInstanceState.getInt(SAVE_PAGE_NUMBER);
    }
    Log.d(TAG, "savedPageNumber = " + savedPageNumber);
 
  }
 
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
  {
      View view = null;
      
      switch (pageNumber) {
      case 0:
    // return inflater.inflate(R.layout.first, null);
          View myFragmentView = inflater.inflate(R.layout.first,
                container, false);
          myFragmentView.setBackgroundColor(backColor);
          
          ListView lvData = (ListView) myFragmentView.findViewById(R.id.listView1);
          lvData.setBackgroundColor(Color.GREEN);
          return myFragmentView;
          
//        view = inflater.inflate(R.layout.first, null);
//        ListView lv = (ListView) view.findViewById(R.id.listView1);
         // lv.setAdapter(FirstFragment.scAdapter);
    //    lv.setBackgroundColor(backColor);
//        TextView tvPage1 = (TextView) view.findViewById(R.id.tvView1);
//        tvPage1.setText("Page " + pageNumber);
//        tvPage1.setBackgroundColor(backColor);
        //  break;
    case 1:
          view = inflater.inflate(R.layout.second, null);
          TextView tvPage2 = (TextView) view.findViewById(R.id.tvView2);
          tvPage2.setText("Page " + pageNumber);
          tvPage2.setBackgroundColor(backColor);
          break;
      case 2:
          view = inflater.inflate(R.layout.therd, null);
          TextView tvPage3 = (TextView) view.findViewById(R.id.tvView3);
          tvPage3.setText("Page " + pageNumber);
          tvPage3.setBackgroundColor(backColor);
          break;
  }
    
    return view;
  }
 
  @Override
  public void onSaveInstanceState(Bundle outState)
  {
    super.onSaveInstanceState(outState);
    outState.putInt(SAVE_PAGE_NUMBER, pageNumber);
  }
 
  @Override
  public void onDestroy()
  {
    super.onDestroy();
    Log.d(TAG, "onDestroy: " + pageNumber);
  }
}

first.xml
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
 
  <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="vertical" >
 
         <TextView
             android:id="@+id/tvView1"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="@string/list_activity1"
             android:textColor="#000000" />
 
         <ListView
             android:id="@+id/listView1"
             android:layout_width="match_parent"
             android:layout_height="wrap_content" >
         </ListView>
 
     </LinearLayout> 
    
 
</LinearLayout>


базу не трогал, а больше вроде ничего с моей проблемой не связано...
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
01.06.2015, 11:14 #32
Это тоже должно быть в MainActivity (т.е. создаем бд) необязательно там, но рекомендовано
Java
1
db = new DB(this); db.open();
Вот поетому бд и не создается, что FirstFragment нигде не вызывается. Почему в MainActivity все FirstFragment закоментированы?
0
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 557
Записей в блоге: 1
01.06.2015, 12:15  [ТС] #33
Rube, сделал база создается,..

переделал first.xml заново,

в PageFragment
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
  {
      View view = null;
      
      switch (pageNumber) {
      case 0:
          view = inflater.inflate(R.layout.first, null);
          TextView tvPage1 = (TextView) view.findViewById(R.id.tvView1);
          tvPage1.setText("Page " + pageNumber);
          tvPage1.setBackgroundColor(backColor);
          ListView lv1 = (ListView) view.findViewById(R.id.listView1);
          lv1.setBackgroundColor(Color.GREEN);
          lv1.setAdapter(FirstFragment.scAdapter);  //МОЖНО ТАК АДАПТЕР ПОВЕСИТЬ ИЗ ДРУГОГО КЛАССА???
          break;
          
    case 1:
          view = inflater.inflate(R.layout.second, null);
          TextView tvPage2 = (TextView) view.findViewById(R.id.tvView2);
          tvPage2.setText("Page " + pageNumber);
          tvPage2.setBackgroundColor(backColor);
          ListView lv3 = (ListView) view.findViewById(R.id.listView3);
          lv3.setBackgroundColor(Color.RED);
          break;
      case 2:
          view = inflater.inflate(R.layout.therd, null);
          TextView tvPage3 = (TextView) view.findViewById(R.id.tvView3);
          tvPage3.setText("Page " + pageNumber);
          tvPage3.setBackgroundColor(backColor);
          break;
  }
    
    return view;
  }

Теперь на нулевой и первой странице ViewPagera отображается и текствьюха и лист,...

а данных все равно нет?
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
01.06.2015, 12:50 #34
Я чот запутался, в PageFragment и FirstFragment у обоих листвью есть? Давай рассматривать только один класс, проще будет.
Адаптер имей свой у каждого класса, зачем городить статики, потом запутаешься.
Во фрагменте проверь возвращает ли курсор записи, проверь совпадение id в to[] и в xml.
А зачем 2 LinearLayout в first.xml?
setBackgroundColor пока закоментируй до выяснений.
case 0 отрабатывает вообще? Засунь туда log.d и смотри в локат.
0
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 557
Записей в блоге: 1
01.06.2015, 13:33  [ТС] #35
Rube, напомню базовые вопросы: отобразить на каждой странице ViewPager'a свой фрагмент со списком? как это сделать я точно не знаю, а лишь предполагаю что коль PageFragment это файл в котором в зависимости от выбранной страницы отображается нужный мне фрагмент со списком и т.п., то и работать надо с ним.

ну а второй это , что в листе не отображаются данные из базы.

теперь, листвью должен быть только у FirstFragment, SecondFragment и т.п., но мы рассматриваем только FirstFragment, адаптер в нем присутствует (рабочий, статик убрал).

во фрагменте курсор записи не возвращает (в MainActivity при запуске всплывает количество строк, а если указывать тост с cursor.getCount в FirstFragment->onActivityCreated... тишина), совпадение id в to и в xml проверил все OK.

first.xml переделал он сейчас такой:
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
 
    <TextView
        android:id="@+id/tvView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Мой текст"
        android:textColor="#000000"
        android:textSize="40sp" />
 
    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="410dp" >
    </ListView>
 
</LinearLayout>


setbkg закоментировал...

когда листаешь, в логе отрабатывает, onCreate 0 и onDestroy 0
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
01.06.2015, 13:47 #36
Давай еще раз классы, только почисти от хлама и сделай формат, а то читать тяжело.
Т.е. тот же самый метод в MainActivity возвращает записи, а в FirstFragment нет? И ошибок нет никаких? Не может быть такого.
0
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 557
Записей в блоге: 1
01.06.2015, 16:08  [ТС] #37
MainActivity
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
public class MainActivity extends ActionBarActivity implements
        NavigationDrawerFragment.NavigationDrawerCallbacks {
 
    private NavigationDrawerFragment mNavigationDrawerFragment;
 
    private CharSequence mTitle;
 
    // _____________________________________________________________________________________________________
 
    public static final int FRAGMENTS = 3;
 
    static final String TAG = "myLogs";
    static final int PAGE_COUNT = 10;
 
    private static final Context Context = null;
 
    public DB db;
    ViewPager pager;
    PagerAdapter pagerAdapter;
    private Cursor cursor;
    static String arg = null;
    static String count = null;
 
    // _____________________________________________________________________________________________________
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        db = new DB(this);
        db.open();
 
        // cursor = db.getAllData(arg);
        // count = String.valueOf(cursor.getCount());
        // Toast tost = Toast.makeText(getApplicationContext(),
        // count, Toast.LENGTH_SHORT);
        // tost.setGravity(50, 200, 30);
        // tost.show();
        mNavigationDrawerFragment = (NavigationDrawerFragment) getSupportFragmentManager()
                .findFragmentById(R.id.navigation_drawer);
        mTitle = getTitle();
 
        // Set up the drawer.
        mNavigationDrawerFragment.setUp(R.id.navigation_drawer,
                (DrawerLayout) findViewById(R.id.drawer_layout));
 
        pager = (ViewPager) findViewById(R.id.pager);
        pagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
        pager.setAdapter(pagerAdapter);
 
    }
 
    // ---------------end onCreate------------
    @Override
    public void onNavigationDrawerItemSelected(int position) {
        // update the main content by replacing fragments
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager
                .beginTransaction()
                .replace(R.id.container,
                        PlaceholderFragment.newInstance(position + 1)).commit();
    }
 
    // ----------Action of String------
    public void onSectionAttached(int number) {
        switch (number) {
        case 1:
            mTitle = getString(R.string.title_section1);
            break;
        case 2:
            mTitle = getString(R.string.title_section2);
            break;
        case 3:
            mTitle = getString(R.string.title_section3);
            break;
        }
    }
 
    // ---------------ActionBar------------------------
    public void restoreActionBar() {
        ActionBar actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
        actionBar.setDisplayShowTitleEnabled(true);
        actionBar.setTitle(mTitle);
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        if (!mNavigationDrawerFragment.isDrawerOpen()) {
 
            getMenuInflater().inflate(R.menu.main, menu);
            restoreActionBar();
            return true;
        }
        return super.onCreateOptionsMenu(menu);
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
 
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
 
    // ---------END------ActionBar------------------------
    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {
        /**
         * The fragment argument representing the section number for this
         * fragment.
         */
        private static final String ARG_SECTION_NUMBER = "section_number";
 
        /**
         * Returns a new instance of this fragment for the given section number.
         */
        public static PlaceholderFragment newInstance(int sectionNumber) {
            PlaceholderFragment fragment = new PlaceholderFragment();
            Bundle args = new Bundle();
            args.putInt(ARG_SECTION_NUMBER, sectionNumber);
            fragment.setArguments(args);
            return fragment;
        }
 
        public PlaceholderFragment() {
        }
 
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container,
                    false);
            return rootView;
        }
 
        @Override
        public void onAttach(Activity activity) {
            super.onAttach(activity);
            ((MainActivity) activity).onSectionAttached(getArguments().getInt(
                    ARG_SECTION_NUMBER));
        }
    }
 
    // --------------end NavDr and ActionBar------------
    private class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {
 
        public MyFragmentPagerAdapter(FragmentManager fm) {
            super(fm);
        }
 
        @Override
        public Fragment getItem(int position) {
            // return _fragments.get(position);
 
            return PageFragment.newInstance(position);
        }
 
        @Override
        public int getCount() {
            return FRAGMENTS;
            // return PAGE_COUNT;
        }
 
        // v2
        @Override
        public CharSequence getPageTitle(int position) {
            return "Title " + position;
        }
 
    }
    // --------------END----MyFragmentPagerAdapter----------
}

FirstFragment
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
public class FirstFragment extends Fragment implements LoaderCallbacks<Cursor> {
 
    private Context context;
    public DB db;
    public static SimpleCursorAdapter scAdapter;
    private Cursor cursor;
    ListView lvData;
    static String arg = null;
    private static final int CM_DELETE_ID = 1;
    DBHelper dbHelper;
    Button btn;
 
    /** Handle the results from the voice recognition activity. */
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        return inflater.inflate(R.layout.first, null);
        // return view;
    }
 
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        // db = new DB(getActivity());
        // db.open();
 
        // получаем курсор
        cursor = db.getAllData(arg);
        String count = String.valueOf(cursor.getCount());
        Toast tost = Toast.makeText(getActivity(), count, Toast.LENGTH_SHORT);
        tost.setGravity(50, 200, 30);
        tost.show();
 
        getActivity().startManagingCursor(cursor);
 
        // формируем столбцы сопоставления
        String[] from = new String[] { DB.COLUMN_IMG, DB.COLUMN_TXT };
        int[] to = new int[] { R.id.ivImg, R.id.tvText };
 
        // создааем адаптер и настраиваем список
 
        scAdapter = new SimpleCursorAdapter(getActivity(), R.layout.item,
                cursor, from, to, 0);
        // scAdapter = new SimpleCursorAdapter(getActivity(), R.layout.item,
        // cursor, from,
        // to);
        lvData = (ListView) getView().findViewById(R.id.listView1);
        lvData.setAdapter(scAdapter);
        // getLoaderManager().initLoader(0, null, this);
        getActivity().getSupportLoaderManager().initLoader(0, null, this);
 
    }
 
    // обработка нажатия кнопки
    public void onButtonClick(View view) {
        // добавляем запись
        db.addRec("sometext " + (scAdapter.getCount() + 1),
                R.drawable.ic_launcher, "да");
        // получаем новый курсор с данными
        getActivity().getSupportLoaderManager().getLoader(0).forceLoad();
    }
 
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(0, CM_DELETE_ID, 0, R.string.delete_record);
    }
 
    public boolean onContextItemSelected(MenuItem item) {
        if (item.getItemId() == CM_DELETE_ID) {
            // получаем из пункта контекстного меню данные по пункту списка
            AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item
                    .getMenuInfo();
            // извлекаем id записи и удаляем соответствующую запись в БД
            db.delRec(acmi.id);
            // получаем новый курсор с данными
            getActivity().getSupportLoaderManager().getLoader(0).forceLoad();
            return true;
        }
        return super.onContextItemSelected(item);
    }
 
    @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle bndl) {
        return new MyCursorLoader(getActivity(), db);
    }
 
    @Override
    public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
        scAdapter.swapCursor(cursor);
    }
 
    @Override
    public void onLoaderReset(Loader<Cursor> loader) {
        // TODO Auto-generated method stub
 
    }
 
    class MyCursorLoader extends CursorLoader {
 
        DB db;
 
        public MyCursorLoader(Context context, DB db) {
            super(context);
            this.db = db;
        }
 
        @Override
        public Cursor loadInBackground() {
            Cursor cursor = db.getAllData(arg);
            try {
                TimeUnit.SECONDS.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return cursor;
        }
 
    }
 
    public void onDestroy() {
        super.onDestroy();
        // закрываем подключение при выходе
        db.close();
    }
}


PageFragment
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
public class PageFragment extends Fragment {
    static final String TAG = "myLogs";
 
    static final String ARGUMENT_PAGE_NUMBER = "arg_page_number";
    static final String SAVE_PAGE_NUMBER = "save_page_number";
 
    public DB db;
    int pageNumber;
    int backColor;
 
    static PageFragment newInstance(int page) {
        PageFragment pageFragment = new PageFragment();
        Bundle arguments = new Bundle();
        arguments.putInt(ARGUMENT_PAGE_NUMBER, page);
        pageFragment.setArguments(arguments);
        return pageFragment;
    }
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        pageNumber = getArguments().getInt(ARGUMENT_PAGE_NUMBER);
        Log.d(TAG, "onCreate: " + pageNumber);
 
        Random rnd = new Random();
        backColor = Color.argb(40, rnd.nextInt(256), rnd.nextInt(256),
                rnd.nextInt(256));
 
        int savedPageNumber = -1;
        if (savedInstanceState != null) {
 
            savedPageNumber = savedInstanceState.getInt(SAVE_PAGE_NUMBER);
        }
        Log.d(TAG, "savedPageNumber = " + savedPageNumber);
 
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = null;
 
        switch (pageNumber) {
        case 0:
            view = inflater.inflate(R.layout.first, null);
            TextView tvPage1 = (TextView) view.findViewById(R.id.tvView1);
            tvPage1.setText("Page " + pageNumber);
             tvPage1.setBackgroundColor(backColor);
            ListView lv1 = (ListView) view.findViewById(R.id.listView1);
             lv1.setBackgroundColor(Color.GREEN);
            lv1.setAdapter(FirstFragment.scAdapter);
            break;
 
        case 1:
            view = inflater.inflate(R.layout.second, null);
            TextView tvPage2 = (TextView) view.findViewById(R.id.tvView2);
            tvPage2.setText("Page " + pageNumber);
            tvPage2.setBackgroundColor(backColor);
            ListView lv3 = (ListView) view.findViewById(R.id.listView3);
            lv3.setBackgroundColor(Color.RED);
            break;
        case 2:
            view = inflater.inflate(R.layout.therd, null);
            TextView tvPage3 = (TextView) view.findViewById(R.id.tvView3);
            tvPage3.setText("Page " + pageNumber);
            tvPage3.setBackgroundColor(backColor);
            break;
        }
 
        return view;
    }
 
    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(SAVE_PAGE_NUMBER, pageNumber);
    }
 
    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy: " + pageNumber);
    }
}


насчет возврата записей, если этот код
Java
1
2
3
4
5
cursor = db.getAllData(arg);
        String count = String.valueOf(cursor.getCount());
        Toast tost = Toast.makeText(getActivity(), count, Toast.LENGTH_SHORT);
        tost.setGravity(50, 200, 30);
        tost.show();
вставить в метод onActivityCreated класса FirstFragment то ничего не происходит,

а если в onCreate класса MainActivity то всплывает тост с количеством строк 4
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
01.06.2015, 19:54 #38
В FirstFragment db надо раскоментировать, я же говорил. Хочешь получить курсор, а db не открыл.
1
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 557
Записей в блоге: 1
01.06.2015, 22:18  [ТС] #39
Rube, раскоментил, ничего не изменилось, список пустой, getCount() (который в FirstFragment) ничего не возвращает....

Добавлено через 1 час 10 минут
отобразился список... но пришлось пойти другим путем...
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
02.06.2015, 13:17 #40
disx, т.е. вопрос решен? Если что, давай проект, вечером гляну.
1
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 557
Записей в блоге: 1
02.06.2015, 14:02  [ТС] #41
Rube, решен, короч, убил этот файл PageFragment.java

в MainActivity написал в в PagerAdapter'e так:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
private class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {
        List<Fragment> mFragments;
 
        public MyFragmentPagerAdapter(FragmentManager fm) {
            super(fm);
            mFragments = new ArrayList<Fragment>();
            mFragments.add(new FirstFragment());
            mFragments.add(new SecondFragment());
        }
 
        @Override
        public Fragment getItem(int position) {
            return mFragments.get(position);
 
            // return PageFragment.newInstance(position);
        }
 
        @Override
        public int getCount() {
            return mFragments.size();
            // return FRAGMENTS;
            // return PAGE_COUNT;
        }
 
        // v2
        @Override
        public CharSequence getPageTitle(int position) {
            return "Title " + position;
        }
 
    }

довел до ума еще cursorloader и все красиво работает, удаляет записи, и т.п.

тебе спасибо что помог повоевать, а то мыслей уже 0 было.... к чему этот PageFragment мне нужен был ?!
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
02.06.2015, 14:10 #42
Цитата Сообщение от disx Посмотреть сообщение
к чему этот PageFragment мне нужен был
Вот я и спрашивал почему у PageFragment и FirstFragment у обоих листвью есть
0
ask-cmv
0 / 0 / 0
Регистрация: 18.07.2016
Сообщений: 1
18.07.2016, 20:57 #43
Привет, парни, только начал осваивать данную тему. Та же проблема, Поначитался разного про фрагменты, но не получается простая вещь. Со своего сервиса получаю данные в xml, распарсиваю в 4 массива. Один простой, другие двумерные. Надо отобразить на 4-х страничках в виде табличек. Не получается. Осваивать Яву начал недавно, хотя работаю программистом, но на других языках. Подскажите как правильней сделать, можно простой рабочий макет?
0
18.07.2016, 20:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2016, 20:57
Привет! Вот еще темы с ответами:

как лудче прикрепить фаил html с ифной который должен отображаться на страницах? - HTML, CSS
Народ подскажите как лудче сделать, у меня сайт примерно на 50 страниц, и есть один блок который на каждой странице в низу один и тотже, и...

Не берутся названия полей из базы - C# ASP.NET
У меня есть RecordSet. Когда я строю HTML таблицу, то название полей беру из массива: Dim Arr_P(2,20) Arr_P(0, 0) = 'Data' ...

Объявить двумерный символьный массив, размеры которого берутся из переменных - C++
Нужно объявить двумерный символьный массив, размеры которого берутся из переменных. Если аналогии с одномерным массивом сделатьchar **m1=...

Автомобиль не должен отображаться если не выбран его тип или в выбранное время он уже занят - C# MVC
Добрый день, утро, или другое время суток заставшее вас.. Вопрос заключается в следующем.... имеется сайт на котором отображаются...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
43
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru