Android 工作室列表视图
Android Studio List View
我想设置我的代码,当我单击我的列表中的一行时查看它 returns 来自文本文件(来自记事本或 Access)的文本。这是可能的还是需要不同的格式。
这是我目前的代码,我相信它应该只是从文件中提取的一两行代码。这是我的主要 Activity 代码:
`
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);
}
这是我的第二个 Activity 代码:
`
@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
}
}
}`
看完答案中的 link 之后,我的第二个 Activity 现在看起来像这样:
@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);
}
}
}
当我 运行 模拟器时,我的 Main Activity 正确出现。
Main Activity of my project
当我单击列表值 4140 而不是使用工具栏显示第二个 Activity 和带有我文件中的文本的文本视图时,它停止工作。
另外我好像遗漏了我想link文本文件到一个特定的列表值。当我对图像执行此操作时,当我单击列表值时,我的工具栏在第二个 activity 上重复了该列表值,然后根据我的工具栏显示的内容,它从我的可绘制文件中提取了正确的图像。看来我遗漏了 link 每个列表值到其特定且正确的文本文件的部分。
在第二个 Activity 中,您应该使用 Reader 来获取 txt 文件字符串。
查看关于 的问答。
关于打开 Access 数据库,这是一个很大的话题,将涉及 reader 并且可能涉及 运行 查询的方法。另一个 解决了这个问题。
P.S.: 很抱歉只添加了链接,但我认为他们对每一点都做了最好的解释。
我想设置我的代码,当我单击我的列表中的一行时查看它 returns 来自文本文件(来自记事本或 Access)的文本。这是可能的还是需要不同的格式。
这是我目前的代码,我相信它应该只是从文件中提取的一两行代码。这是我的主要 Activity 代码: `
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);
}
这是我的第二个 Activity 代码:
`
@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
}
}
}`
看完答案中的 link 之后,我的第二个 Activity 现在看起来像这样:
@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);
}
}
}
当我 运行 模拟器时,我的 Main Activity 正确出现。 Main Activity of my project
当我单击列表值 4140 而不是使用工具栏显示第二个 Activity 和带有我文件中的文本的文本视图时,它停止工作。
另外我好像遗漏了我想link文本文件到一个特定的列表值。当我对图像执行此操作时,当我单击列表值时,我的工具栏在第二个 activity 上重复了该列表值,然后根据我的工具栏显示的内容,它从我的可绘制文件中提取了正确的图像。看来我遗漏了 link 每个列表值到其特定且正确的文本文件的部分。
在第二个 Activity 中,您应该使用 Reader 来获取 txt 文件字符串。
查看关于
关于打开 Access 数据库,这是一个很大的话题,将涉及 reader 并且可能涉及 运行 查询的方法。另一个
P.S.: 很抱歉只添加了链接,但我认为他们对每一点都做了最好的解释。