Android Studio Просмотр списка
Я хотел бы настроить свой код, чтобы при нажатии строки в представлении списка он возвращал текст из текстового файла (из блокнота или Access). Это возможно или это должен быть другой формат.
Это то, что у меня есть код, я считаю, что это должна быть одна или две строки кода, которые будут извлекаться из файла. Вот мой основной код активности:
Toolbar toolbar;
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar=(Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle(getResources().getString(R.string.app_name));
listView=(ListView) findViewById(R.id.listView);
ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_list_item_1,
getResources().getStringArray(R.array.Materials));
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent= new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("MaterialName", listView.getItemAtPosition(i).toString());
startActivity(intent);
}
});
listView.setAdapter(mAdapter);
}
Вот мой второй код активности:
`
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
mToolbar = (Toolbar) findViewById(R.id.toolbar1);
material = (TextView) findViewById(R.id.textView);
Bundle bundle = getIntent().getExtras();
if(bundle != null) {
mToolbar.setTitle(bundle.getString("MaterialName"));
if(mToolbar.getTitle().toString().equalsIgnoreCase("4140")){
//how do I get it to return the information from a text file
}
}
}`
После просмотра ссылок в разделе "Ответы" мое второе задание теперь выглядит так:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
BufferedReader reader = null;
try {
reader = new BufferedReader(
new InputStreamReader(getAssets().open("4140.txt")));
String mLine;
while ((mLine = reader.readLine()) != null) {
text.append(mLine);
text.append('\n');
}
} catch (IOException e) {
Toast.makeText(getApplicationContext(), "Error reading file!", Toast.LENGTH_LONG).show();
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
}
}
TextView output= (TextView) findViewById(R.id.toolbar1);
output.setText((CharSequence)text);
}
}
}
Когда я запускаю эмулятор, моя основная активность отображается правильно. Основная деятельность моего проекта
Когда я нажимаю на значение списка 4140 вместо того, чтобы вызвать Второе действие с панелью инструментов и текстовое представление с текстом из моего файла, оно перестает работать.
Также я, кажется, не учел, что хочу связать текстовый файл с определенным значением списка. Когда я делал это с изображениями, когда я щелкал по значению списка, моя панель инструментов во втором упражнении повторила это значение списка, а затем, в зависимости от того, что сказала моя панель инструментов, оно получило правильное изображение из моего нарисованного файла. Кажется, мне не хватает той части, которая связывает каждое значение списка с его конкретным и правильным текстовым файлом.
1 ответ
Во втором упражнении вы должны использовать Reader, чтобы получить строку текстового файла.
Проверьте этот вопрос о чтении текста и выводе в виде текстового представления.
Об открытии базы данных Access, это большая тема, которая будет включать читателя и, возможно, способ выполнения запросов к ней. Этот другой вопрос адресован вещи.
PS: Извините за добавление только ссылок, но я думаю, что они лучше всего объяснили каждый пункт.