2014-11-16 5 views
0

Заранее спасибо за помощь, мой код ниже взят в текстовом файле и отображает его в ListView, у меня есть имя и youtube в одной строке внутри текстового поля.Преобразование String в ArrayList

но я ищу попытку, чтобы получить строку youtube внутри текстового файла и передать ее новому классу активности в качестве веб-представления для воспроизведения видео просто интересно, как это можно сделать, как я могу пройти эта строка в мои сеттеры внутри моего класса Model, чтобы получить экземпляр этого объекта, мне нужно преобразовать String в ArrayListString?

public class menuFragment extends ListFragment { 
    ArrayList<model> songList = new ArrayList<model>(); 
    public String[] listSongs = new String[]{}; 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.list_fragment, container, false); 
     loadSongs(); 
     return view; 
    } 
    public void loadSongs() { 
     try { 
      Resources ResFiles = getResources(); 
      InputStream ReadDbFile = ResFiles.openRawResource(R.raw.songs); 
      byte[] Bytes = new byte[ReadDbFile.available()]; 
      ReadDbFile.read(Bytes); 
      String DbLines = new String(Bytes); 
      listSongs = DbLines.split(","); 
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), 
        android.R.layout.simple_list_item_1, listSongs); 
      setListAdapter(adapter); 
     } catch (Exception e) { 
     } 
    } 

    @Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
     Intent i = new Intent(getActivity(), playVid.class); 
     model selectedSong = MainController.getInstance().getSongs().get(position); 
     i.putExtra("selectedSong", selectedSong); 
     startActivity(i); 
    } 


public class model implements Serializable { 
    private String name; 
    private String url; 

    public model(String name, String url) { 
     this.name=name; 
     this.url = url; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getUrl(){ 
     return url; 
    } 
    public void setUrl(String url){ 
     this.url = url; 
    } 

public class MainController 
{ 
    private static MainController instance; 
    private ArrayList<model> songList; 
    private MainController() 
    { 
     this.songList = new ArrayList<model>(); 
    } 
    public static MainController getInstance() 
    { 
     if(instance == null) 
     { 
      instance = new MainController(); 
     } 
     return instance; 
    } 
    public void addFlight(String name, String singer, String url) 
    { 
     model f = new model(name,singer,url); 
     this.songList.add(f); 
    } 
    public ArrayList<model> getSongs() 
    { 
     return this.songList; 
    } 
+0

Пример вашей строки? – Simas

+0

EdSheeran # http: //www.youtube.com/watch? V = lp-EO5I60KA, – David

ответ

0

Название класса предложения должно начинаться с капитала - Модель.

У вас есть только три переменные для перехода к другому действию, поэтому у вас может быть три putExtra с вашим намерением не нужно для ArrayList, Sir.

Model selectedSong = MainController.getInstance().getSongs().get(position); 
    i.putExtra("name", selectedSong.getName()); 
    i.putExtra("singer", selectedSong.getSinger()); 
    i.putExtra("url", selectedSong.getUrl()); 
    startActivity(i); 

А внутри OnCreate другой деятельности, мы можем получить доступ к этим три значения, как таким образом,

Intent mIntent = getIntent(); 
    String name = mIntent.getStringExtra("name"); 
    String singer = mIntent.getStringExtra("singer"); 
    String url = mIntent.getStringExtra("url"); 
+0

Благодарим за помощь. Когда я запускаю код, я получаю java.lang.IndexOutOfBoundsException: неверный индекс 3, размер 0. Он указывает на выбранную модельSong = MainController.getInstance.getSongs(). Get (position) кажется, что это может быть ошибка из-за того, что я не указываю мой ArrayAdapter на класс модели? – David

+0

Это потому, что, прежде чем вы получите их методом getSongs, вам нужно установить их с помощью метода addFlight. Я не вижу этого в вашем коде. – Chitrang

+0

Ok Спасибо, я не заметил, что пропал без вести, должен ли я добавить addSong в метод void или он нужен? – David

Смежные вопросы