0

我试图思考我应该如何做到这一点背后的逻辑。我现在这样做的方式有点像黑客,但它确实有效。这只是太多的 API 请求和不必要的,所以希望这里有人可以帮助我设想我应该如何做到这一点。

我正在使用 parse.com SDK for android 来检索数据以显示视频。

这是我的视频功能代码

int count = 9;


private void getVideos()
  {

       ParseQuery<ParseObject> query = ParseQuery.getQuery("Videos");
       query.whereEqualTo("videoid", count);
       query.findInBackground(new FindCallback<ParseObject>() {
           public void done(List<ParseObject> videoData, ParseException e) {
               if (e == null) {
                   /** check to see if there are any more videos **/
                   if(videoData.size() == 0){
                       Toast.makeText(getApplicationContext(), "No more videos found.", Toast.LENGTH_LONG).show();
                   }else{
                     for(int i=0; i<videoData.size(); i++){
                          String videoUrl = videoData.get(i).getString("url");
                          String videoTitle = videoData.get(i).getString("title");
                          String videoUser =  videoData.get(i).getString("user");

                          TextView title = (TextView)findViewById(R.id.videoTitle);
                          title.setTextColor(Color.parseColor("#FFFFFF"));
                          title.setText(videoTitle);

                          TextView user = (TextView)findViewById(R.id.videoUser);
                          user.setTextColor(Color.parseColor("#FFFFFF"));
                          user.setText("By: " + videoUser);

                          myVideoView = (VideoView) findViewById(R.id.myvideoview);
                          myVideoView.setVideoPath(vineVideoUrl); 
                          myVideoView.setMediaController(null);
                          myVideoView.start();

                          /** loop video **/
                          myVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                              public void onCompletion(MediaPlayer mp) {

                                myVideoView.start();  

                             }
                          });

                            /** next video **/
                           Button button= (Button) findViewById(R.id.button1);
                           button.setOnClickListener(new View.OnClickListener() {
                               @Override
                               public void onClick(View v) {
                                   count++;
                                   Toast.makeText(getApplicationContext(), "Loading...", Toast.LENGTH_LONG).show();
                                   getVideos();
                               }
                           });

                       }

                   }
               } else {
                   Toast.makeText(getApplicationContext(), "Unable to retrieve videos, please check back later.", Toast.LENGTH_LONG).show();
               }
           }
       });


  }

每次按下按钮时,它都会增加计数,并从 API 获取该 ID 的视频。我想弄清楚的是如何以正确的方式从 API 中检索最新的 20 个视频?

我认为正确的方法是:

从 API 获取最新的 20 个视频,存储在数组中,然后在按下按钮时循环遍历每个视频。我将如何将它们分别传递给 textview?我怎么知道什么时候是最后一个视频 (20) 并再次调用 API 并传回新结果?

4

1 回答 1

0

您可以创建一个List<String> oldMovies将保存您已收到的电影的 ID,现在每次您想在查询中添加更多电影时添加此约束movieQuery.notConteindIn("onjectId", oldMovies)。这将返回一个电影列表,其中不objectsId包含oldMovies. 每次您都需要更新oldMovieid 列表。

于 2013-08-03T12:11:13.180 回答