这是我的.java文件:
package com.example.rohitkulkarni.readingfile;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView= (ListView) findViewById(R.id.listView);
try{
InputStream inputreader = getAssets().open("myaddress.txt");
BufferedReader buffreader = new BufferedReader(new InputStreamReader(inputreader));
ArrayList<String> lines = new ArrayList<String>();
boolean hasNextLine =true;
while (hasNextLine){
String line = buffreader.readLine();
lines.add(line);
hasNextLine = line != null;
}
tv.setText((CharSequence) lines);
//exception here:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),R.id.listView,lines);
listView.setAdapter(adapter);
inputreader.close();
}
catch(FileNotFoundException e){
}catch(IOException e){
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
这是我的xml文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listView"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
我正在使用getAsset工作正常,但只有ArrayAdaptor不工作我尝试了所有可能的组合,但它无法正常工作。它使用简单的字符串数组。
答案 0 :(得分:1)
String line = buffreader.readLine();
//我发现他正在取值,所以检查它
if(line!= null);
lines.add(line);
hasNextLine = line != null;
//不是它工作正常,谢谢
答案 1 :(得分:0)
中间论点是错误的,来自here:
包含在实例化视图时使用的TextView的布局文件的资源ID。
但是你传递了一个id:
new ArrayAdapter<String>(getApplicationContext(), R.id.listView, lines);
这应该是一个布局:
new ArrayAdapter<String>(getApplicationContext(), R.layout.???, lines);
答案 2 :(得分:0)
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),R.id.listView,lines);
在此行中,您传递了ListView ID。
但构造函数期望布局膨胀。所以传递布局。
喜欢这个
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,lines);
也在这一行。
tv.setText((CharSequence) lines);
tv
。如果是TextView,则要为其设置ArrayList。试试tv.setText(lines.toString())
答案 3 :(得分:0)
尝试使用..
adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1 , lines);