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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
madmonkey
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 14
#1

Переход на новое activity с элемента listView, заполненного через SimpleCursorAdapter - Программирование Android

03.05.2015, 15:59. Просмотров 1656. Ответов 12
Метки нет (Все метки)

Здравствуйте! Помогите разобраться с такой проблемой:
Есть список listView, который получает данные из БД через SimpleCursorAdapter. По нажатию на элемент списка нужно перейти на новое Activity, то есть нужно достать position, у меня не выходит...
Нагуглить тоже не получается, везде примеры либо с ListActivity, либо с ArrayAdapter, либо только с логами, без перехода на другое activity.

Еще здесь же нужно сделать, чтобы цвета элементов чередовались. Думаю, это тоже можно сделать с помощью position, но пока даже не могу попробовать. Изучаю программирование Android совсем недавно, но проект нужно сделать срочно

Вот код activity:
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
public class BasicoActivity extends ActionBarActivity  {
 
        ListView lv1;
    Cursor words;
    MyDatabase db;
    String LOG_TAG = "myLogs";
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_basico);
 
        final ActionBar actionBar = getSupportActionBar();
        actionBar.setHomeButtonEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);
 
        lv1 = (ListView) findViewById(R.id.lv1);
        db = new MyDatabase(this);
        words = db.getWords();
        startManagingCursor(words);
 
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                R.layout.item_lesson,
                words,
                new String[]{"word", "trans_w"},
                new int[] {R.id.espUnit, R.id.rusUnit});
        lv1.setAdapter(adapter);
 
        lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> av, View v, int position, long id) {
 
                Log.d(LOG_TAG, "itemClick: position = " + position + ", id = "
                        + id);
 
                //здесь ошибка: incompatible types
                //int pos = av.getAdapter().getItem(position);
 
                //выход в новое Activity
                //Intent intent1 = new Intent(BasicoActivity.this, MainActivity.class);
                //startActivity(intent1);
                }
        });
 
    }
Вот код разметки элемента списка item_lesson.xml:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/espUnit"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/rusUnit"
        android:layout_marginBottom="10dp"
        android:layout_marginLeft="10dp"/>
</LinearLayout>
Файл разметки activity_basico.xml:
XML
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<ListView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/lv1"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".BasicoActivity"/>
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2015, 15:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переход на новое activity с элемента listView, заполненного через SimpleCursorAdapter (Программирование Android):

Переход с элемента listView на activity - Программирование Android
никак не возьму в толк, каким образом можно реализовать переход на новое activity с элемента listView, чтобы при нажатии на 1 строку...

Вызвать из ListView новое Activity (где задействован SimpleAdapter) - Программирование Android
Привет Всем! Я купил себе android... и вдруг возникли мысли ...почему бы не сделать приложения.... и не изучить вообщем язык...

Вывод из базы данных в ListView через SimpleCursorAdapter - Программирование Android
Доброе время суток. Пишу программу под Андроид в среде Android Studio и возникла проблема с выводом данных в listview через...

При нажатии на элемент ListView вывести новое Activity с информацией об этом элементе - Программирование Android
Здравствуйте! Помогите пожалуйста! В общем есть список ListView с названиями кафе и ресторанов, надо сделать так чтобы при нажатии на...

Переход между Activity через заданное время. Как лучше? - Программирование Android
Добрый день. Вопрос от новичка. Какую задачу хотел решить: появляется первое Activity. Через 5 секунд (например) - приложение...

Прикрутить RadioGroup к ListView(SimpleCursorAdapter) - Программирование Android
Не могу понять как реализовать одиночный выбор из списка: Сейчас выводит список компаний, где я могу сделать множественный выбор, а мне...

12
-37_Holod
1 / 1 / 1
Регистрация: 03.05.2013
Сообщений: 28
03.05.2015, 19:24 #2
Ну, на самом деле это не то чтоб уж прям совсем элементарная задача... Для начала нужно создать кастомный адаптер, наследующийся от SimpleCursorAdapter, там переопределить метод getView, в нем получить обьект View от R.layout.item_lesson, а на него уже повесить клик листенер, в этом же методе, кстати, можно прописать логику чередования цветов. Чето типа такого

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
public class SimpleCursorAdapterExt extends SimpleCursorAdapter {
    private Cursor c;
    private Context context;
 
    public SimpleCursorAdapterExt(Context context, int layout, Cursor c,
            String[] from, int[] to) {
        super(context, layout, c, from, to);
        this.c = c;
        this.context = context;
    }
 
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return c.getColumnCount();
    }
 
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = LayoutInflater.from(context).inflate(R.layout.item,
                    null);
        }
        convertView.setOnClickListener(new OnClickListener() {
 
            @Override
            public void onClick(View v) {
                Log.d("myLogs", "" + position);
                                ((Activity) context).startActivity(new Intent((((Activity) context)), MainActivity.class));
            }
        });
 
        return convertView;
    }
 
}
0
madmonkey
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 14
03.05.2015, 22:45  [ТС] #3
-37_Holod, извините, я еще очень плохо разбираюсь в коде и могу задавать глупые вопросы... я убрала onItemClick в своем коде, добавила Ваш, заменила SimpleCursorAdapter на новый. Получилось так:
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
public class ElementalActivity extends ActionBarActivity {
 
    ListView lv2;
    Cursor words;
    MyDatabase db;
    String LOG_TAG = "myLogs";
 
    public enum TransitionType {
        SlideLeft, SlideRight
    }
    public static TransitionType transitionType;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_elemental);
 
        final ActionBar actionBar = getSupportActionBar();
        actionBar.setHomeButtonEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);
 
 
        lv2 = (ListView) findViewById(R.id.lv2);
        db = new MyDatabase(this);
        words = db.getWords();
        startManagingCursor(words);
 
        SimpleCursorAdapterExt adapter = new SimpleCursorAdapterExt(this,
                R.layout.item,
                words,
                new String[]{"word", "trans_w"},
                new int[] {R.id.espUnit1, R.id.rusUnit1});
 
 
        lv2.setAdapter(adapter);
    }
 
    public class SimpleCursorAdapterExt extends SimpleCursorAdapter {
        private Cursor c;
        private Context context;
 
        public SimpleCursorAdapterExt(Context context, int layout, Cursor c,
                                      String[] from, int[] to) {
            super(context, layout, c, from, to);
            this.c = c;
            this.context = context;
        }
 
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return c.getColumnCount();
        }
 
        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                convertView = LayoutInflater.from(context).inflate(R.layout.item,
                        null);
            }
            convertView.setOnClickListener(new OnClickListener() {
 
                @Override
                public void onClick(View v) {
                    Log.d("myLogs", "" + position);
                    ((ElementalActivity) context).startActivity(new Intent((((ElementalActivity) context)), MainActivity.class));
                }
            });
 
            return convertView;
        }
 
    }
Что здесь неправильно? (надеюсь, не все...) При запуске этого активити создаются всего 2 элемента в списке и то пустые. В лог выводится нажатый position, переход на другое активити работает.
0
-37_Holod
1 / 1 / 1
Регистрация: 03.05.2013
Сообщений: 28
03.05.2015, 23:38 #4
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
public class BasicoActivity extends ActionBarActivity  {
 
        ListView lv1;
    Cursor words;
    MyDatabase db;
    String LOG_TAG = "myLogs";
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_basico);
 
        final ActionBar actionBar = getSupportActionBar();
        actionBar.setHomeButtonEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);
 
        lv1 = (ListView) findViewById(R.id.lv1);
        db = new MyDatabase(this);
        words = db.getWords();
        startManagingCursor(words);
 
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                R.layout.item_lesson,
                words,
                new String[]{"word", "trans_w"},
                new int[] {R.id.espUnit, R.id.rusUnit})
{
            @Override
            public View getView(final int position, View convertView,
                    ViewGroup parent) {
                if (convertView == null) {
                    convertView = LayoutInflater.from(BasicoActivity.this)
                            .inflate(R.layout.item_lesson, null);
                }
                convertView.setOnClickListener(new OnClickListener() {
 
                    @Override
                    public void onClick(View v) {
 
                        startActivity(new Intent(BasicoActivity.this,
                                MainActivity.class));
                    }
                });
 
                return convertView;
            }
        };
        lv1.setAdapter(adapter);
 
       
 
    }
Вот это попробуйте скопипастить к себе, а предыдущие изменения удалите. Писал "на глаз" поэтому если все равно не работает, пишите в личку, будем разбираться.
0
madmonkey
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 14
04.05.2015, 01:36  [ТС] #5
-37_Holod, теперь выводится список с тем же количеством элементов, что и в курсоре, только они все равно пустые)
Вообще, извините, что запарила, но я наверно лучше переформулирую вопрос...

Есть Activity (BasicoActivity) со списком listView (список уроков). При нажатии на item должно открываться другое Activity (TabsActivity), в котором 3 таба и 3 фрагмента соответственно. В эти фрагменты должны передаваться данные о нажатом элементе listView, чтобы можно было выводить в фрагменты TabsActivity данные из БД по соответствующему нажатому уроку. Как-то так, надеюсь, понятно объяснила)
Кликните здесь для просмотра всего текста
Вначале спрашивала, как с нажатого элемента перейти на другое activity (сколько элементов - столько и активити), потому и нужно было как-то определить, на что именно нажали...но лучше загружать разные данные в одно и то же активити, чем создавать множество разных активити ведь, поэтому немного переделала код и поставила вопрос иначе.


В другом месте подсказали, как это сделать, но у меня не получается, возникает ошибка.
BasicoActivity получилось такое:
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
public class BasicoActivity extends ActionBarActivity  {
 
        ListView lv1;
    Cursor lessons;
    MyDatabase db;
    String LOG_TAG = "myLogs";
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_basico);
 
        final ActionBar actionBar = getSupportActionBar();
        actionBar.setHomeButtonEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);
 
        lv1 = (ListView) findViewById(R.id.lv1);
        db = new MyDatabase(this);
        lessons = db.getUnits1();
        startManagingCursor(lessons);
 
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                R.layout.item_lesson,
                lessons,
                new String[]{"name_u", "chapter"},
                new int[] {R.id.espUnit, R.id.rusUnit});
        lv1.setAdapter(adapter);
 
        lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> av, View v, int position, long id) {
                
                Log.d(LOG_TAG, "itemClick: position = " + position + ", id = "
                        + id);
 
                //при нажатии на любой item просто открывается TabsActivity
                //в TabsActivity передается position нажатого элемента
                Intent intent1 = new Intent(BasicoActivity.this, TabsActivity.class);
                intent1.putExtra("pos",position);
                startActivity(intent1);
                }
        });
 
    }
Тут же хотелось бы понять, как раскрасить элементы списка (четные - одним, нечетные - другим)

TabsActivity (я взяла шаблон в AndroidStudio с табами и свайпом между ними):
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
public class TabsActivity extends ActionBarActivity implements ActionBar.TabListener {
 
    final String LOG_TAG = "myLogs";
    ViewPager mViewPager;
    SectionsPagerAdapter mSectionsPagerAdapter;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tabs);
 
        Bundle bundle = new Bundle();
        bundle.putInt("pos", getIntent().getExtras().getInt("pos")); //данные из первого активити (BasicoActivity)
        GrammarFragment.setArguments(bundle);//здесь ошибка!!
 
        final ActionBar actionBar = getSupportActionBar();
        actionBar.setHomeButtonEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
 
        ...
    }
 
public static class GrammarFragment extends Fragment { //создание Fragment
 
        private static final String ARG_SECTION_NUMBER = "section_number";
 
        public static GrammarFragment newInstance(int sectionNumber) {
            GrammarFragment fragment = new GrammarFragment();
            Bundle args = new Bundle();
            args.putInt(ARG_SECTION_NUMBER, sectionNumber);
            fragment.setArguments(args);
            return fragment;
        }
 
        public GrammarFragment() {
        }
 
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_grammar, container, false);
 
            Bundle bundle = getArguments(); //переданный position
            int position = bundle.getInt("pos", -1); 
 
            return rootView;
        }
    }
 
//ниже еще 2 фрагмента
...
 
    }
setArguments в 14 строчке подчеркивает красным: Error57, 24) error: non-static method setArguments(Bundle) cannot be referenced from a static context

И нужно наверно как-то проверить, действительно ли передаются эти данные, поместить в лог, например, переданное значение, или еще как-то..

Заранее спасибо за помощь)
0
-37_Holod
1 / 1 / 1
Регистрация: 03.05.2013
Сообщений: 28
04.05.2015, 09:58 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
public class BasicoActivity extends ActionBarActivity  {
 
        ListView lv1;
    Cursor words;
    MyDatabase db;
    String LOG_TAG = "myLogs";
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_basico);
 
        final ActionBar actionBar = getSupportActionBar();
        actionBar.setHomeButtonEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);
 
        lv1 = (ListView) findViewById(R.id.lv1);
        db = new MyDatabase(this);
        words = db.getWords();
        startManagingCursor(words);
 
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                R.layout.item_lesson,
                words,
                new String[]{"word", "trans_w"},
                new int[] {R.id.espUnit, R.id.rusUnit})
{
          @Override
            public View getView(final int position, View convertView,
                    ViewGroup parent) {
                if (convertView == null) {
                    convertView = LayoutInflater.from(BasicoActivity.this)
                            .inflate(R.layout.item_lesson, null); 
                }
                words.moveToPosition(position);
                String text = words.getString(words
                        .getColumnIndex(DB.COLUMN_TXT)); // Тут пропиши название
                                                            // колонки с текстом
                                                            // из своей
                                                            // базы данных (MyDatabase )
 
                TextView tvText = (TextView) convertView
                        .findViewById(R.id.tvText); // Здесь вставь название id
                                                    // своего textview из xml
                                                    // файла item_lesson 
                tvText.setText(text);
                if (position % 2 != 0) {
                    convertView.setBackgroundColor(Color.CYAN);
                } else {
                    convertView.setBackgroundColor(Color.YELLOW);
                }
                convertView.setOnClickListener(new OnClickListener() {
 
                    @Override
                    public void onClick(View v) {
                        Intent intent = new Intent(BasicoActivity.this,
                                MainActivity.class);
                        intent.putExtra("variable_name", position);
                        startActivity(intent);
                        // Вот это пропиши в onCreate методе той активности,
                        // которой ты хочешь передать номер нажатого элемента
                        // Bundle extras = getIntent().getExtras();
                        // if (extras != null) {
                        // int value = extras.getInt("variable_name");
                        // Log.d(LOG_TAG , "value = " + value);
                        // }
 
                    }
                });
 
                return convertView;
            }
        };
        lv1.setAdapter(adapter);
 
       
 
    }
Попробуй вот так, скопипасти, обращая внимания на комментарии, некоторые строки нужно изменить основываясь на своих данных из твоего MyDatabase класса и item_lesson файла... вроде ничего не забыл...
1
madmonkey
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 14
04.05.2015, 13:00  [ТС] #7
-37_Holod, ооо все отлично работает, спасибо огромное!!!
Если можно, у меня еще один вопрос (последний): не получается вывести список в фрагмент, приложение вылетает. Уже долго с этим мучаюсь, и так и эдак пробовала, сотни примеров посмотрела, но никак, хоть убей(
Ошибка: java.lang.NullPointerException.
Если не затруднит, подскажите, что здесь не так:
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
public class TabsActivity extends ActionBarActivity implements ActionBar.TabListener {
 
    final String LOG_TAG = "myLogs";
    ViewPager mViewPager;
    SectionsPagerAdapter mSectionsPagerAdapter;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tabs);
 
        Bundle extras = getIntent().getExtras();
        if (extras != null) {
        int value = extras.getInt("variable_name");
        Log.d(LOG_TAG , "value = " + value);
        }
...
}
 
public static class WordsFragment extends ListFragment {
 
        private static final String ARG_SECTION_NUMBER = "section_number";
 
        public static WordsFragment newInstance(int sectionNumber) {
            WordsFragment fragment = new WordsFragment();
            Bundle args = new Bundle();
            args.putInt(ARG_SECTION_NUMBER, sectionNumber);
            fragment.setArguments(args);
            return fragment;
        }
 
        public WordsFragment() {
        }
 
           MyDatabase db = new MyDatabase(getActivity());
           Cursor words = db.getWords();
 
        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
 
            SimpleCursorAdapter adapter = new SimpleCursorAdapter (getActivity(),
                    R.layout.item_words,
                    words,
                    new String[] {"word", "trans_w"},
                    new int[] {R.id.espWord1, R.id.rusWord1});
            setListAdapter(adapter);
        }
 
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_words, container, false);
            return rootView;
        }
 
        @Override
        public void onDestroy() {
            super.onDestroy();
            words.close();
            db.close();
        }
    }
Здесь так же нужно его раскрасить, так же нужно будет определять и getView()?
0
-37_Holod
1 / 1 / 1
Регистрация: 03.05.2013
Сообщений: 28
04.05.2015, 20:29 #8
Цитата Сообщение от madmonkey Посмотреть сообщение
Здесь так же нужно его раскрасить, так же нужно будет определять и getView()?
Что именно? SimpleCursorAdapter в строке 42 ? Да, по аналогии.
Цитата Сообщение от madmonkey Посмотреть сообщение
Ошибка: java.lang.NullPointerException.
Напиши полный stack trace (весь красный текст скопипасть)
0
madmonkey
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 14
04.05.2015, 20:42  [ТС] #9
-37_Holod,
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
05-04 17:39:09.536  25482-25482/com.madmonkey.myapp E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NullPointerException
            at com.readystatesoftware.sqliteasset.SQLiteAssetHelper.<init>(SQLiteAssetHelper.java:109)
            at com.readystatesoftware.sqliteasset.SQLiteAssetHelper.<init>(SQLiteAssetHelper.java:129)
            at com.madmonkey.myapp.MyDatabase.<init>(MyDatabase.java:16)
            at com.madmonkey.myapp.TabsActivity$WordsFragment.<init>(TabsActivity.java:273)
            at com.madmonkey.myapp.TabsActivity$WordsFragment.newInstance(TabsActivity.java:263)
            at com.madmonkey.myapp.TabsActivity$SectionsPagerAdapter.getItem(TabsActivity.java:229)
            at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:97)
            at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:837)
            at android.support.v4.view.ViewPager.populate(ViewPager.java:987)
            at android.support.v4.view.ViewPager.populate(ViewPager.java:919)
            at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1441)
            at android.view.View.measure(View.java:15172)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
            at android.view.View.measure(View.java:15172)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
            at android.support.v7.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:453)
            at android.view.View.measure(View.java:15172)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
            at android.view.View.measure(View.java:15172)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
            at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390)
            at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
            at android.view.View.measure(View.java:15172)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2148)
            at android.view.View.measure(View.java:15172)
            at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1848)
            at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1100)
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1273)
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998)
            at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4212)
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
            at android.view.Choreographer.doCallbacks(Choreographer.java:555)
            at android.view.Choreographer.doFrame(Choreographer.java:525)
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
            at android.os.Handler.handleCallback(Handler.java:615)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4745)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
если не SimpleCursorAdapter, а ArrayAdapter использовать в том же месте, то все работает и список создается.(
0
-37_Holod
1 / 1 / 1
Регистрация: 03.05.2013
Сообщений: 28
04.05.2015, 21:09 #10
пробни вместо

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    MyDatabase db = new MyDatabase(getActivity());
           Cursor words = db.getWords();
 
        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
 
            SimpleCursorAdapter adapter = new SimpleCursorAdapter (getActivity(),
                    R.layout.item_words,
                    words,
                    new String[] {"word", "trans_w"},
                    new int[] {R.id.espWord1, R.id.rusWord1});
            setListAdapter(adapter);
        }
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
MyDatabase db;
     Cursor words;
 
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
 
         SimpleCursorAdapter adapter = new SimpleCursorAdapter (getActivity(),
                    R.layout.item_words,
                    words,
                    new String[] {"word", "trans_w"},
                    new int[] {R.id.espWord1, R.id.rusWord1});
            setListAdapter(adapter);
        db = new MyDatabase(getActivity());
        words = db.getWords();
    }
0
madmonkey
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 14
04.05.2015, 21:30  [ТС] #11
-37_Holod, все заработало, какая глупая ошибка у меня была. Только я переместила эти две строчки не в конец, а в начало метода.
Еще раз спасибо, буду пробовать извлекать данные в зависимости от нажатого элемента в первом списке
0
-37_Holod
1 / 1 / 1
Регистрация: 03.05.2013
Сообщений: 28
04.05.2015, 21:53 #12
Цитата Сообщение от -37_Holod Посмотреть сообщение
getActivity()
с этим методом нужно осторожно, он возвращает null пока не отработано super.onActivityCreated(savedInstanceState);, соответственно в бд отправлялся нулевой аргумент и приложение крашилось
0
madmonkey
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 14
04.05.2015, 22:00  [ТС] #13
-37_Holod, понятно теперь, спасибо, буду знать!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2015, 22:00
Привет! Вот еще темы с ответами:

SimpleCursorAdapter(ListView заполняется данными только после прокрутки скрола) - Программирование Android
Помогите решить задачу. У меня ListView начинает заполняться данными, только после первой прокрутки списка. Т.е в начальный момент список...

Новое Activity или ViewGroup - Программирование Android
Здравствуйте. НЕ подскажите, как нужно правильно реализовать вот такой UI: Тут верхний ряд кнопок(он не меняется во всем приложении), а...

Ошибка при переходе на новое Activity - Программирование Android
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? При переходе на новое активити программа выдает ошибку и вылетает. Я...

Вытащить информацию из SQLite на новое Activity - Программирование Android
Здравствуйте! У меня есть 3 класса: В DB создаю базу данных, записи добавляются прямо из приложения. В MainActivity по данным из...


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

Или воспользуйтесь поиском по форуму:
13
Yandex
Объявления
04.05.2015, 22:00
Ответ Создать тему
Опции темы

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