Метод вызова Activiti через ListView

Activity Lifecycle, Saving Activity State, Managing Tasks, Intent, Intent Filter
Ответить
LabXtwO
Сообщения: 5
Зарегистрирован: 07 дек 2015, 20:33

Метод вызова Activiti через ListView

Сообщение LabXtwO » 07 дек 2015, 21:10

Всем привет.

Каким образом реализовать следующее: Любое значение списка ListView вызывает ТОЛЬКО ОДНО И ТО ЖЕ новое Activiti и отображает текст, который изначально соответствует своему значению в списке LIstView, а так же при этом сам текст храниться в формате xml.

Фуф... вроде как то так)

На многих форумах и их ветках есть подобные вопросы : " У меня в списке 100 значений и мне надо 100 Activiti (причем массив информации 99% разработчиков пишут прям в коде)"? Так вот им часто дают советы, что это не правильно, что надо делать максимум 2-3 Activiti и информацию хранить в xml. Но все кто заводил подобные вопросы отписывались, что и так пойдет... ветка загибалась!

Прошу отозваться тех, кто реально такое реализовал.

Аватара пользователя
Elek
Сообщения: 55
Зарегистрирован: 29 май 2012, 09:57

Re: Метод вызова Activiti через ListView

Сообщение Elek » 08 дек 2015, 00:57

Привет, значения, если они постоянные можно храинть в string-array, в strings.xml, например:

Код: Выделить всё

<string-array name="array_name">
        <item>Text1</item>
        <item>Text2</item>
        <item>Text3</item>
 </string-array>
Массив получить из xml таким образом:

Код: Выделить всё

String[] stringArray = getResources().getStringArray(R.array.array_name);
Вот этот массив уже передавать в адаптер.

Передать текст можно таким образом:

Код: Выделить всё

Intent mIntent = new Intent(getApplicationContext(), AnotherActivity.class);
mIntent.putExtra("text", "текст из массива или текст из view");
startActivity(mIntent);
Получить этот текст в в созданном активити:

Код: Выделить всё

Intent intent = getIntent();
if(intent != null) {
String test = intent.getStringExtra("text");
}
Это один из вариантов решения проблемы.

LabXtwO
Сообщения: 5
Зарегистрирован: 07 дек 2015, 20:33

Re: Метод вызова Activiti через ListView

Сообщение LabXtwO » 08 дек 2015, 08:01

Elek, привет. У меня на первом этапе реализовано так:

Добавляю в strings.xml следующий код

Код: Выделить всё

<resources>
    <string name="app_name">NewTest</string>
    <string-array name="zag_names">
        <item>ТЕСТ1</item>
        <item>ТЕСТ2</item>
        <item>ТЕСТ3</item>
        <item>ТЕСТ4</item>
        <item>ТЕСТ5</item>
        <item>ТЕСТ6</item>
        <item>ТЕСТ7</item>
        <item>ТЕСТ8</item>
        <item>ТЕСТ9</item>
        <item>ТЕСТ10</item>
        <item>ТЕСТ11</item>
        <item>ТЕСТ12</item>
        <item>ТЕСТ13</item>
        <item>ТЕСТ14</item>
        <item>ТЕСТ15</item>
        <item>ТЕСТ16</item>
        <item>ТЕСТ17</item>
    </string-array>
</resources>
Далее делаю стандартный список

Код: Выделить всё

public class MainActivity extends ListActivity {


    final String[] ZagNamesArray = getResources().getStringArray(R.array.zag_names);

    private ArrayAdapter<String> mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mAdapter = new ArrayAdapter<>(this,
                android.R.layout.simple_list_item_1, ZagNamesArray);
        setListAdapter(mAdapter);
    }
}
Теперь необходимо таким образом реализовать приложение:

User запускает приложение (Сборник пословиц)) и видит список (пословицы разбиты на темы), кликает на нужную ему тему и читает всю информацию по данной теме на новой вкладке, прочитал, жмет Back, и снова попадает в список, выбрал тему и вновь читает всю всю информацию по данной теме на новой вкладке.

Так вот я хочу что бы всегда открывалась только одна Activiti и выводила информацию (мой случай - текст) согласно привязки к информации в списке. Из описанного Вами метода я не смог понять от куда новая Activiti потянет "основную" информацию (текст)?

Аватара пользователя
Elek
Сообщения: 55
Зарегистрирован: 29 май 2012, 09:57

Re: Метод вызова Activiti через ListView

Сообщение Elek » 08 дек 2015, 13:39

Как будут храниться пословицы ? Тоже массив xml ?
Можно передавать номер текста в массиве и на основе этого номера загружать остальные пословицы.
Можно попробовать хранить все в базе данных.
Сделать 2 таблицы, в одной хранить темы пословиц и порядковый номер темы. Во второй таблице хранить пословицы и порядковый номер темы, к которой относится данная пословица.

LabXtwO
Сообщения: 5
Зарегистрирован: 07 дек 2015, 20:33

Re: Метод вызова Activiti через ListView

Сообщение LabXtwO » 08 дек 2015, 20:56

Вот тут я пока не определился, будет ли зависеть выбор условия хранения пословиц (либо массив XML, либо БД) от реализации отображения этих пословиц? Другими словами каждая пословица на своей пронумерованной странице, а перемотка между страницами кнопками <- СЮДА и ТУДА->)) Что посоветуешь?

Аватара пользователя
Elek
Сообщения: 55
Зарегистрирован: 29 май 2012, 09:57

Re: Метод вызова Activiti через ListView

Сообщение Elek » 10 дек 2015, 21:05

На данном этапе лучше сделать, через массивы в xml.
При кнопке <- туда сюда -> отбавлять или добавлять позицию в массиве и брать оттуда пословицу.

LabXtwO
Сообщения: 5
Зарегистрирован: 07 дек 2015, 20:33

Re: Метод вызова Activiti через ListView

Сообщение LabXtwO » 13 дек 2015, 23:46

Буду пробовать, тему пока не закрывать)

Ответить