Заполнение многоколоночного ListView текстовым файлом (Android) - PullRequest
1 голос
/ 07 мая 2020

У меня есть файл с именем «musi c .txt» в каталоге res / raw. Он содержит список песен и авторов, разделенных «;», например:

Богемская рапсодия; Queen

Piano man; Billy Joel

Born to run; Bruce Springsteen

И я хочу использовать этот список для заполнения ListView из 2 столбцов. Когда я пытаюсь запустить текущий код, появляется сообщение об ошибке: «ArrayAdapter требует, чтобы идентификатор ресурса был TextView». До сих пор я пытался заставить его работать только с первым столбцом, поэтому мне потребуется помощь, чтобы сделать это и с двумя столбцами, потому что я понятия не имею, как это сделать.

Я дал кстати разрешение читать манифест. Вот мой код:

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);
}


}

ListView:

<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" />

Спасибо!

1 Ответ

0 голосов
/ 07 мая 2020

Вы можете попробовать следующее:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.activity_list_item, android.R.id.text1, data);

ArrayAdapter требует, чтобы идентификатор ресурса был TextView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...