如何在Android中的ListView中显示YouTubePlayerView?

如何在Android中的ListView中显示YouTubePlayerView?,第1张

概述以下显示错误: NullPointerException: Cannot start activity component(a.b.YoutubeActivity) 请检查一下.到目前为止,传递单个videoID仍然存在NullPointerException.以下是我的VideoAdapter: public class VideoAdapter extends BaseAdapter impl 以下显示错误:

NullPointerException: Cannot start activity component(a.b.YoutubeActivity)

请检查一下.到目前为止,传递单个vIDeoID仍然存在NullPointerException.以下是我的VIDeoAdapter:

public class VIDeoAdapter extends BaseAdapter implements YouTubePlayer.OnInitializedListener {    public static final String API_KEY = "Xxxx-pcD82qk8";    public static final String VIDEO_ID = "7UpbJKeiv_Y";    Context context;    LayoutInflater inflater;    JsONArray jArray = null;    ArrayList<YouTubeItem> List;    private YouTubePlayer youTubePlayer;    private YouTubePlayerVIEw youTubePlayerVIEw;    public VIDeoAdapter(Activity context,JsONArray jArray) {        // Todo auto-generated constructor stub        parseResponse(jArray);    }    private voID parseResponse(JsONArray jArray) {        if (jArray != null && jArray.length() > 0) {            String date;            String Title;            String link;            JsONObject JsonObject;            List = new ArrayList<YouTubeItem>();            for (int i = 0; i < jArray.length(); i++) {                try {                    JsonObject = jArray.getJsONObject(i);                    date = JsonObject.getString("date");                    Title = JsonObject.getString("Title");                    link = JsonObject.getString("link");                    if (date != null && Title != null && link != null) {                        List.add(new YouTubeItem(date,Title,link));                    }                } catch (JsONException e) {                    e.printstacktrace();                }            }        }        String[] date = new String[jArray.length()];        String[] Title = new String[jArray.length()];        String[] link = new String[jArray.length()];    }    @OverrIDe    public VIEw getVIEw(int position,VIEw convertVIEw,VIEwGroup parent) {        // Todo auto-generated method stub        Log.i("adapter 1","");        VIEw rowVIEw = convertVIEw;        if (convertVIEw == null) {            LayoutInflater inflater = (LayoutInflater) context                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);            rowVIEw = inflater.inflate(R.layout.youtube_vIEw,parent,false);        }        Log.i("adapter 3","");        youTubePlayerVIEw = (YouTubePlayerVIEw) rowVIEw                .findVIEwByID(R.ID.youtubeplayervIEw);        Log.i("adapter 4","");        youTubePlayerVIEw.initialize(API_KEY,this);        Log.i("adapter 5","");        TextVIEw d = (TextVIEw) rowVIEw.findVIEwByID(R.ID.textVIEw1);        Log.i("adapter 6","");        TextVIEw t = (TextVIEw) rowVIEw.findVIEwByID(R.ID.textVIEw2);        Log.i("adapter 7","");        TextVIEw l = (TextVIEw) rowVIEw.findVIEwByID(R.ID.textVIEw3);        Log.i("adapter 8","");        d.setText(List.get(position).getDate());        Log.i("adapter 9","");        t.setText(List.get(position).getTitle());        Log.i("adapter 10","");        l.setText(List.get(position).getlink());        Log.i("adapter 11","");        return rowVIEw;    }    @OverrIDe    public int getCount() {        return List.size();    }    @OverrIDe    public Object getItem(int arg0) {        // Todo auto-generated method stub        return null;    }    @OverrIDe    public long getItemID(int i) {        // Todo auto-generated method stub        return i;    }    private class YouTubeItem {        private String date;        private String Title;        private String link;        private YouTubeItem(String date,String Title,String link) {            this.date = date;            this.Title = Title;            this.link = link;        }        public String getDate() {            return date;        }        public voID setDate(String date) {            this.date = date;        }        public String getTitle() {            return Title;        }        public voID setTitle(String Title) {            this.Title = Title;        }        public String getlink() {            return link;        }        public voID setlink(String link) {            this.link = link;        }    }    @OverrIDe    public voID onInitializationFailure(ProvIDer arg0,YouTubeInitializationResult arg1) {        // Todo auto-generated method stub    }    @OverrIDe    public voID onInitializationSuccess(ProvIDer provIDer,YouTubePlayer player,boolean wasRestored) {        // Todo auto-generated method stub        youTubePlayer = player;        if (!wasRestored) {            player.cueVIDeo(VIDEO_ID);        }    }}
解决方法 用这个替换适配器

public class VIDeoAdapter extends BaseAdapter {Context context;LayoutInflater inflater;JsONArray jArray = null;ArrayList<YouTubeItem> List;public VIDeoAdapter(YoutubeActivity youtubeActivity,int activityYouTubeAPI,JsONArray jArray) {    // Todo auto-generated constructor stub    parseResponse(jArray);}private voID parseResponse(JsONArray jArray) {    if (jArray != null && jArray.length() > 0) {        String date;        String Title;        String link;        JsONObject JsonObject;        List = new ArrayList<>();        for (int i = 0; i < jArray.length(); i++) {            try {                JsonObject = jArray.getJsONObject(i);                date = JsonObject.getString("date");                Title = JsonObject.getString("Title");                link = JsonObject.getString("link");                if (date != null && Title != null && link != null) {                    List.add(new YouTubeItem(date,link));                }            } catch (JsONException e) {                e.printstacktrace();            }        }    }    String[] date = new String[jArray.length()];    String[] Title = new String[jArray.length()];    String[] link = new String[jArray.length()];}@OverrIDepublic VIEw getVIEw(int position,VIEwGroup parent) {    // Todo auto-generated method stub    LayoutInflater inflater = (LayoutInflater) context            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);    VIEw rowVIEw = inflater.inflate(R.layout.youtube_vIEw,false);    YouTubePlayerVIEw you = (YouTubePlayerVIEw) rowVIEw.findVIEwByID(R.ID.youtubeplayervIEw);    TextVIEw d = (TextVIEw) rowVIEw.findVIEwByID(R.ID.textVIEw1);    TextVIEw t = (TextVIEw) rowVIEw.findVIEwByID(R.ID.textVIEw2);    TextVIEw l = (TextVIEw) rowVIEw.findVIEwByID(R.ID.textVIEw3);    d.setText(List.get(position).getDate());    t.setText(List.get(position).getTitle());    l.setText(List.get(position).getlink());    return rowVIEw;}@OverrIDepublic int getCount() {    return List.size();}@OverrIDepublic Object getItem(int arg0) {    // Todo auto-generated method stub    return null;}@OverrIDepublic long getItemID(int i) {    // Todo auto-generated method stub    return i;}private class YouTubeItem {    private String date;    private String Title;    private String link;    private YouTubeItem(String date,String link) {        this.date = date;        this.Title = Title;        this.link = link;    }    public String getDate() {        return date;    }    public voID setDate(String date) {        this.date = date;    }    public String getTitle() {        return Title;    }    public voID setTitle(String Title) {        this.Title = Title;    }    public String getlink() {        return link;    }    public voID setlink(String link) {        this.link = link;    }}}

我创建了一个名为YouTubeItem的Object,而不是创建三个不同的Arrays.这将更易读,更容易 *** 作,如果丢失了三个数组中任何一个数据的一个属性并且解析单个进程(无效对象不会影响整个过程),则可以避免任何问题

如果您还有其他问题,请与我们联系

总结

以上是内存溢出为你收集整理的如何在Android中的ListView中显示YouTubePlayerView?全部内容,希望文章能够帮你解决如何在Android中的ListView中显示YouTubePlayerView?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1125459.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存