我想设置我的代码,当我在列表视图中单击一行时,它会返回文本文件中的文本(从记事本或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的列表值时,它不再用工具栏显示第二个活动,也不再用文件中的文本显示文本视图,而是停止工作。
我似乎还遗漏了一点,那就是我想将文本文件链接到一个特定的列表值。当我对图像进行此操作时,当我单击一个列表值时,我的工具栏在第二个活动中重复了该列表值,然后根据工具栏所说的内容,它从我的可绘制文件中提取了正确的图像。我似乎缺少了将每个列表值链接到其特定且正确的文本文件的部分。
在第二个"活动"中,您应该使用Reader来获取txt文件字符串。
检查这个q&a关于读取txt并输出为文本视图。
关于打开Access数据库,这是一个涉及读者的大主题,也许还有一种在数据库上运行查询的方法。另一个问题解决了这个问题。
附言:很抱歉只添加了链接,但我认为他们最好地解释了每一点。