Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用txt文件填充多列ListView(Android)_Java_Android - Fatal编程技术网

Java 用txt文件填充多列ListView(Android)

Java 用txt文件填充多列ListView(Android),java,android,Java,Android,我在res/raw目录中有一个名为“music.txt”的文件。它包含以“;”分隔的歌曲和作者列表,如下所示: 波西米亚狂想曲;女王 钢琴手;比利·乔尔 生来就是为了跑步;布鲁斯·斯普林斯汀 我想用这个列表填充一个2列的列表视图。当我尝试使用当前代码运行时,会显示一个错误,上面写着“ArrayAdapter要求资源ID为TextView”。到目前为止,我只是试图让它只与第一列工作,所以帮助将是可取的,以做它与2列以及,因为我不知道如何做 顺便说一句,我同意阅读舱单。这是我的密码: public

我在res/raw目录中有一个名为“music.txt”的文件。它包含以“;”分隔的歌曲和作者列表,如下所示:

波西米亚狂想曲;女王

钢琴手;比利·乔尔

生来就是为了跑步;布鲁斯·斯普林斯汀

我想用这个列表填充一个2列的列表视图。当我尝试使用当前代码运行时,会显示一个错误,上面写着“ArrayAdapter要求资源ID为TextView”。到目前为止,我只是试图让它只与第一列工作,所以帮助将是可取的,以做它与2列以及,因为我不知道如何做

顺便说一句,我同意阅读舱单。这是我的密码:

public class Main2Activity extends AppCompatActivity {

ListView list;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);

    list = findViewById(R.id.musicList);

    loadData();

}

public void loadData(){
    List<String> musicArray = new ArrayList<String>();
    String line;

    InputStream is = this.getResources().openRawResource(R.raw.music);
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));

    try {
        if (is != null) {
            while ((line = reader.readLine()) != null) {
                musicArray.add(line.split(";")[0]);
            }
        }
        is.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

    String data[] = musicArray.toArray(new String[musicArray.size()]);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.activity_list_item, data);
    list.setAdapter(adapter);
}


}
公共类Main2活动扩展了AppCompative活动{
列表视图列表;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
列表=findViewById(R.id.musicList);
loadData();
}
公共void loadData(){
List musicArray=new ArrayList();
弦线;
InputStream is=this.getResources().openRawResource(R.raw.music);
BufferedReader reader=新的BufferedReader(新的InputStreamReader(is));
试一试{
如果(is!=null){
而((line=reader.readLine())!=null){
musicArray.add(line.split(“;”)[0]);
}
}
is.close();
}捕获(IOE异常){
e、 printStackTrace();
}
字符串数据[]=musicArray.toArray(新字符串[musicArray.size()]);
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.activity\u list\u项,数据);
list.setAdapter(适配器);
}
}
列表视图:

<ListView
    android:id="@+id/musicList"
    android:layout_width="409dp"
    android:layout_height="729dp"
    android:layout_marginStart="1dp"
    android:layout_marginLeft="1dp"
    android:layout_marginTop="1dp"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

谢谢

您可以尝试以下方法:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.activity_list_item, android.R.id.text1, data);
ArrayAdapter adapter=新的ArrayAdapter(这是android.R.layout.activity\u list\u项,android.R.id.text1,数据);
ArrayAdapter要求资源ID为文本视图

您可以尝试以下方法:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.activity_list_item, android.R.id.text1, data);
ArrayAdapter adapter=新的ArrayAdapter(这是android.R.layout.activity\u list\u项,android.R.id.text1,数据);
ArrayAdapter要求资源ID为文本视图