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.: 很抱歉只添加了链接,但我认为他们对每一点都做了最好的解释。