2016-09-09 2 views
1

Ich habe ein videoview und listview/gridview in meiner playvideo Aktivität. Ein Video wird bereits im Videobild wiedergegeben. Aber jetzt möchte ich das andere Video spielen, das in der Listview/Gridview gezeigt wird, wie kann ich das tun?Versenden videolink von listview zu videoview in der gleichen Tätigkeit

enter image description here

playvideo Aktivität

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



} 

Antwort

1

Wenn Sie die App, um die Daten zu erhalten, müssen öffnen beginnen und speichern auf einer Variablen oder in die Datenbank.

Erstellen Sie einen ChannelList Typ List (List<ChannelList>) und speichern Sie ChannelList-Daten darin.

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

können Sie speichern Title, VideoUrl, iconUrl und an den list hinzuzufügen.

Wenn Sie auf ein Listenelement klicken, erhalten Sie die Position mit setOnItemClickListener. Und dann verwenden Sie die Position, um die angeklickte ChannelList Position zu erhalten.

Angenommen, Ihre Listentypvariable ist 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 

      } 

     } 
    }); 

Für mehr über List können Sie überprüfen, es Here

+0

Aber wie kann ich die Videoview Link in setonclicklistener Methode zu ändern? Weil ich den ersten Link von videoview überschreiben muss, der 'String videourl =" http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4 "ist;' –

+1

schreibe eine Methode, übergebe die Video-URL und rufe onItemClick auf – Sudarshan

Verwandte Themen