检索数据并传递给textview

时间:2013-08-02 18:53:43

标签: java android android-videoview

我正在考虑如何做到这一点背后的逻辑。我现在这样做的方式有点像黑客,但它确实有效。这是太多的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并传回新的结果?

1 个答案:

答案 0 :(得分:0)

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