2014-11-16 82 views
0

在此先感谢您的帮助,我的代码在文本文件中显示并显示在ListView中,我在文本字段中的一行中包含Name和youtube。将字符串转换为ArrayList

但我看着试图做的是获取文本文件中的youtube字符串,并将其传递给我的新Activity类作为webview播放视频 只是想知道如何做到这一点,我怎么能通过这个字符串到我的模型类中的Setters为了得到它的一个实例,我需要将字符串转换为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.它指向模型selectedSong = MainController.getInstance.getSongs()。get(position)它似乎这可能是一个错误,因为我不指出我的ArrayAdapter模型类? – David

+0

这是因为,在getSongs方法获取它们之前,您需要使用addFlight方法设置它们。我没有看到你的代码。 – Chitrang

+0

好的,谢谢,我没有注意到,缺少,我应该将addSong放入一个无效的方法或有需要吗? – David