Всем привет. У меня возник вопрос. Как вызвать 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. При нажатие на одном из вариантов, открывается текст из этих файлов.
Подскажите как такое реализовать? Желателен ответ с пояснениями.
Вопрос очень общий и объемный, но примерно это будет выглядеть так:
Добавляете обработчик кликов для 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);
});
Во второй активити получаете позицию:
int position;
Intent intent = getIntent();
if (intent != null) {
position = intent.getIntExtra("POSITION_KEY", -1);
}
В зависимости от позиции читаете нужный файл:
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();
}
Продвижение своими сайтами как стратегия роста и независимости