Вызов Activity из списка ListView

302
01 августа 2017, 16:10

Всем привет. У меня возник вопрос. Как вызвать Activity через нажатие на одном из вариантов из списка ListView, и чтобы на втором Activity показало текст из папки res/raw. В одной статье было написано, что можно делать таким образом:

private String Iv_ar[]={ 
"1. Text1",//n0 
"2. Text2",//n1 
"3. Text3",//n2 
"4. Text4" //n7 
};

Но там не было полного кода и вообще объяснения. Потом в папке res/raw. Создать файлы в формате .txt или .html. С названиями n0.txt, n1.txt, n2.txt, n7.txt. При нажатие на одном из вариантов, открывается текст из этих файлов.

Подскажите как такое реализовать? Желателен ответ с пояснениями.

Answer 1

Вопрос очень общий и объемный, но примерно это будет выглядеть так:

  1. Добавляете обработчик кликов для ListView, получаете в нем позицию, запаковываете ее в интенет и запускаете новую активити:

    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
            intent.putExtra("POSITION_KEY", position);
            startActivity(intent);
    });
    
  2. Во второй активити получаете позицию:

    int position;
    Intent intent = getIntent();
    if (intent != null) {
        position = intent.getIntExtra("POSITION_KEY", -1);
    }
    
  3. В зависимости от позиции читаете нужный файл:

        String content;
        switch (position) {
            case 1:
                content = loadStringFromRawResource(getResources(), R.raw.file_1);
                break;
            case 2:
                content = loadStringFromRawResource(getResources(), R.raw.file_2);
                break;
            case 3:
                content = loadStringFromRawResource(getResources(), R.raw.file_3);
                break;
            default:
                content = "Empty content";
                break;
        }
    

Код методов для чтения:

private static String loadStringFromRawResource(Resources resources, int resId) {
    InputStream inputStream = resources.openRawResource(resId);
    String content = streamToString(inputStream);
    try {
        inputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return content;
}
private static String streamToString(InputStream inputStream) {
    String line;
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
    StringBuilder stringBuilder = new StringBuilder();
    try {
        while ((line = bufferedReader.readLine()) != null) {
            stringBuilder.append(line + "\n");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return stringBuilder.toString();
}
READ ALSO
Приложение вылетает при запросе к сети [дубликат]

Приложение вылетает при запросе к сети [дубликат]

На данный вопрос уже ответили:

364
Проблема с кодировкой Java

Проблема с кодировкой Java

Столкнулся с проблемой чтения из файла: при выводе в консоль содержимого файла вместо кириллицы показывает такие символы

355
Как итерировать hash # в href для паджинации

Как итерировать hash # в href для паджинации

Дано: Полученный объект который хранит лист других объектов в jsp

332
Некорректная работа кнопок приложения

Некорректная работа кнопок приложения

Приложение что-то наподобие словаряЕсть менюшка из 4 кнопок: добавить, загрузить, удалить и выйти

499