23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
1

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

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

Author24 — интернет-сервис помощи студентам
Помогите запустить, пишу приложение в котором на каждой странице 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2015, 08:01
Ответы с готовыми решениями:

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

Откуда берутся данные для POST запроса
Добрый вечер. Пытаюсь повторить POST запрос. Загружаю страницу в браузере. В инструментах...

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

Откуда берутся данные для записи методом Flush StreamWriter?
Откуда берутся данные для записи методом Flush StreamWriter?

42
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
28.05.2015, 19:32  [ТС] 21
Author24 — интернет-сервис помощи студентам
Rube, убрал не помогло...
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
28.05.2015, 21:18 22
cursor = db.getAllData(arg); записи то возвращаются?
R.layout.item покажи.
Вот так должен работать:
Java
1
2
scAdapter = new SimpleCursorAdapter(getActivity(), R.layout.item,
    cursor, from, to, 0)
0
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
29.05.2015, 08:19  [ТС] 23
Rube,
cursor = db.getAllData(arg); записи то возвращаются?
а как это проверить, Questoid SQ lite manager показывает что создаваемая база имеет 4 таблицы и в одной из них ("mytab") есть 4 строки с картинкой и текстом... с нее пытаюсь данные выцепить...

R.layout.item:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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="wrap_content"
 android:orientation="horizontal">
 
<ImageView
    android:id="@+id/ivImg"
    android:layout_width="44dp"
    android:layout_height="44dp"
    android:src="@drawable/cribbook" >
 
</ImageView>
<TextView
 android:id="@+id/tvText"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center_vertical"
 android:layout_marginLeft="10dp"
 android:textSize="18sp">
</TextView>
</LinearLayout>
Вот так должен работать:
поменял, пока ничего...
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
29.05.2015, 13:34 24
Цитата Сообщение от disx Посмотреть сообщение
а как это проверить
Элементарно cursor.getCount()
1
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
30.05.2015, 08:10  [ТС] 25
Rube, вкинул в MainActivity это:

Java
1
2
3
4
5
6
cursor = db.getAllData(arg);
        String count = String.valueOf(cursor.getCount());
        Toast tost = Toast.makeText(getApplicationContext(),
                count, Toast.LENGTH_SHORT);
        tost.setGravity(50, 200, 30);
        tost.show();
при запуске всплывает "4", но если этот же код поместить в FirstFragment (поменяв контекст на getActivity)... то тишина, такое ощущение что все что написано в этом фрагменте не выполняется, хотя текствью находит может и лист просто без данных я так понял не увидишь....

попробовал задавать цвет в Page Fragment вот так:

Java
1
2
3
4
5
6
 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;
так бэкграунд фрагмента закрашивает, а списка зеленого цвета таки нет...
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
31.05.2015, 13:04 26
Цитата Сообщение от disx Посмотреть сообщение
но если этот же код поместить в FirstFragment (поменяв контекст на getActivity)... то тишина
Конечно, если так:
Java
1
2
3
4
5
//      db = new DB(getActivity());
//      db.open();
 
        // получаем курсор
        cursor = db.getAllData(arg)
Убери слеши.
0
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
31.05.2015, 18:32  [ТС] 27
Rube, Убрал слеши здесь...

А в MainActivity их закоментил, база опять не создаётся...
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
01.06.2015, 08:55 28
Цитата Сообщение от disx Посмотреть сообщение
база опять не создаётся...
Видимо согрешил ты неблагодарностью своею. Выложи код, может поможет.
0
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
01.06.2015, 10:16  [ТС] 29
Rube, да не замечал я за собой таких грехов, милостивый государь, но на всякий случай "щелкну в репу"

вот весь проект, может вся картина скорее поможет...

https://yadi.sk/d/1u1ueP0dgzEst
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
01.06.2015, 10:46 30
Вряд ли кто будет с проектом возиться, ежели только времени навалом. Клади лучше сюда в спойлер проблемные участки.
0
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
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
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
01.06.2015, 11:14 32
Это тоже должно быть в MainActivity (т.е. создаем бд) необязательно там, но рекомендовано
Java
1
db = new DB(this); db.open();
Вот поетому бд и не создается, что FirstFragment нигде не вызывается. Почему в MainActivity все FirstFragment закоментированы?
0
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
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
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
01.06.2015, 12:50 34
Я чот запутался, в PageFragment и FirstFragment у обоих листвью есть? Давай рассматривать только один класс, проще будет.
Адаптер имей свой у каждого класса, зачем городить статики, потом запутаешься.
Во фрагменте проверь возвращает ли курсор записи, проверь совпадение id в to[] и в xml.
А зачем 2 LinearLayout в first.xml?
setBackgroundColor пока закоментируй до выяснений.
case 0 отрабатывает вообще? Засунь туда log.d и смотри в локат.
0
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
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
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
01.06.2015, 13:47 36
Давай еще раз классы, только почисти от хлама и сделай формат, а то читать тяжело.
Т.е. тот же самый метод в MainActivity возвращает записи, а в FirstFragment нет? И ошибок нет никаких? Не может быть такого.
0
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
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
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
01.06.2015, 19:54 38
В FirstFragment db надо раскоментировать, я же говорил. Хочешь получить курсор, а db не открыл.
1
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
01.06.2015, 22:18  [ТС] 39
Rube, раскоментил, ничего не изменилось, список пустой, getCount() (который в FirstFragment) ничего не возвращает....

Добавлено через 1 час 10 минут
отобразился список... но пришлось пойти другим путем...
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
02.06.2015, 13:17 40
disx, т.е. вопрос решен? Если что, давай проект, вечером гляну.
1
02.06.2015, 13:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.06.2015, 13:17
Помогаю со студенческими работами здесь

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

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

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

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

Не берутся названия полей из базы
У меня есть RecordSet. Когда я строю HTML таблицу, то название полей беру из массива: Dim...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru