我的playvideo活动中有一个videoview和listview / gridview。
videoview中已经播放了一个视频。但是现在我想播放listview / gridview中显示的其他视频,我该怎么做?

java - 在同一 Activity 中将视频链接从列表 View 发送到视频 View-LMLPHP

Playvideo活动

public class playvideoactivity extends Activity  {

    GridViewWithHeaderAndFooter grid;
    String videourl="http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4";

    private static final String url = "http://dakwf.org/api/bd_english.json";

    private List<ChannelItem> chanellist = new ArrayList<ChannelItem>();
    private static final String TAG = MainActivity.class.getSimpleName();

    public static VideoView player;
    public static ImageButton btnPlayPause;
    private ImageView btnFullscreen;
    private ProgressBar spinner;
    private RelativeLayout mediaController;
    private Handler btnHandler = new Handler();



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        spinner = (ProgressBar) findViewById(R.id.progressBar);
        player=(VideoView) findViewById(R.id.player);
        mediaController=(RelativeLayout) findViewById(R.id.media_controller);
        spinner.setVisibility(View.VISIBLE);
        mediaController.setVisibility(View.INVISIBLE);
        btnPlayPause=(ImageButton) findViewById(R.id.btn_playpause);
        btnFullscreen=(ImageView) findViewById(R.id.btn_fullscreen);

        final CustomGridviewadapter customGridview= new CustomGridviewadapter(this,chanellist);

        grid = (GridViewWithHeaderAndFooter) findViewById(R.id.grid_view);
        setGridViewHeaderAndFooter();
        grid.setAdapter(customGridview);

        //----------- Creating volley request obj--------------------
        JsonArrayRequest movieReq = new JsonArrayRequest(url,new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
                Log.d(TAG, response.toString());


                // Parsing json
                for (int i = 0; i < response.length(); i++) {
                    try {

                        JSONObject obj = response.getJSONObject(i);
                        ChannelItem item = new ChannelItem();
                        item.setTitle(obj.getString("title"));
                        item.setThumbnailUrl(obj.getString("image"));



                        // adding movie to movies array
                        chanellist.add(item);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }

                // notifying list adapter about data changes
                // so that it renders the list view with updated data
                customGridview.notifyDataSetChanged();
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());


            }
        });

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(movieReq);



        //------------------- Mediacontroller Visiblity-------------------------------------

        player.setOnTouchListener(new View.OnTouchListener()
        {
            public boolean onTouch(final View paramAnonymousView, MotionEvent paramAnonymousMotionEvent)
            {
                if (paramAnonymousMotionEvent.getAction() == 0){

                    if (MainActivity.this.mediaController.getVisibility() != View.INVISIBLE) {

                    }

                    MainActivity.this.mediaController.setVisibility(View.VISIBLE);

                    MainActivity.this.btnHandler.postDelayed(new Runnable(){
                        public void run(){


                            MainActivity.this.mediaController.setVisibility(View.INVISIBLE);
                        }
                    }, 2000L);
                }
                for (;;){
                    return true;

                }
            }
        });


        //------FullScreen Button -----

        btnFullscreen.setOnClickListener(new View.OnClickListener(){
            public void onClick(View paramAnonymousView) {
                Intent i = new Intent(MainActivity.this, FullScreenView.class);
                startActivity(i);
            }
        });

        //------Play Pause Button  ----------

        btnPlayPause.setOnClickListener(new View.OnClickListener() {

            public void onClick(View paramAnonymousView){

                if ( (player != null) && (MainActivity.this.player.isPlaying()) ){
                    MainActivity.this.player.pause();
                    MainActivity.this.btnPlayPause.setBackgroundResource(R.drawable.btn_play);

                    return;
                }
                MainActivity.this.player.start();
                MainActivity.this.btnPlayPause.setBackgroundResource(R.drawable.btn_pause);



                return;
            }
        });
        //----------------------------------------


            try {
                MediaController mController = new MediaController(MainActivity.this);
                mController.setAnchorView(player);
                Uri video = Uri.parse(videourl);
                player.setMediaController(mController);
                player.setVideoURI(video);
            } catch (Exception e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }

            player.setMediaController(null);
            player.requestFocus();
            player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer arg0) {
                    player.start();
                    hidespinner();

                }
            });

        }




    // ------------ Header Gridview ----------------

    @SuppressLint({"InflateParams", "SetTextI18n"})
    private void setGridViewHeaderAndFooter() {
        LayoutInflater layoutInflater = LayoutInflater.from(this);
        View headerView = layoutInflater.inflate(R.layout.grid_header, null, false);

        //locate views
        TextView headerText = (TextView)headerView.findViewById(R.id.textViewheader);

        headerText.setText("Suggestion");

        headerView.setOnClickListener(onClickListener(0));

        grid.addHeaderView(headerView);
    }

    private View.OnClickListener onClickListener(final int i) {
        return new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (i == 0) {
                 //   Toast.makeText(MainActivity.this, "Header Clicked!", Toast.LENGTH_SHORT).show();
                } else {
                 //   Toast.makeText(MainActivity.this, "Footer Clicked!", Toast.LENGTH_SHORT).show();
                }
            }
        };
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        hidespinner();
    }

    private void hidespinner() {
        if (spinner != null) {
            spinner.setVisibility(View.INVISIBLE);
            spinner = null;
        }
    }



}

最佳答案

打开启动应用程序时,您需要获取数据并将其存储在变量中或数据库中。

创建一个ChannelList类型ListList<ChannelList>)并将ChannelList数据存储到其中。

 List<ChannelList> list = new ArrayList<>(); // containing all data


您可以存储TitleVideoUrliconUrl并将其添加到list

单击列表项时,您将使用setOnItemClickListener获得职位。
然后使用该位置获取单击的ChannelList位置。

假设您的列表类型变量为channelList

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                ChannelList channelList= list.get(position);
                // now you have all data of clicked ChannelList
                // do whatever you like
                //channelList.getVideoUrl(); etc as your getter method

            }

        }
    });


有关List的更多信息,可以将其选中Here

08-04 12:55