【问题标题】:Adding If statement to list view or is there an other way?将 If 语句添加到列表视图还是有其他方法?
【发布时间】:2019-03-10 20:11:44
【问题描述】:

我在列表视图中有两个选项(第 1 部分和第 2 部分)。我希望他们每个人都播放不同的视频。 (来自 Youtube 即)。我怎么做? IF语句还是有其他方法?这是 Mainactivity2。

public class Main2Activity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    final String[] sublectures = {"Part 1","Part 2"};
    ListAdapter appadapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, sublectures);
    ListView list2 = findViewById(R.id.list2);
    list2.setAdapter(appadapter1);

    list2.setOnItemClickListener(
            new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    String lecture = String.valueOf(parent.getItemAtPosition(position));
                    Intent startintent = new Intent(getApplicationContext(),Main3Activity.class);
                    startActivity(startintent);

                }


            });
}}

这需要 Mainactivity 3。即

public class Main3Activity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener {

public static final String API_KEY = "<key here>";
public static final String VIDEO_ID = "W2TYS_Jvzjc";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main3);
    YouTubePlayerView youTubePlayerView = findViewById(R.id.youtubePlayerView);
    youTubePlayerView.initialize(API_KEY, this);
}

@Override

public void onInitializationFailure (YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult){
    Toast.makeText(this, "Fail to Load", Toast.LENGTH_LONG).show();

    }
    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {


        if (!wasRestored) {
            player.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT);
            player.cueVideo(VIDEO_ID);
        }
    }
}

【问题讨论】:

  • 当您发布问题时,您包含了 YouTube API 密钥。 API 密钥可能会被滥用。虽然它可以被删除,但版主需要编辑修订(意味着完全隐藏令牌并有效地销毁修订)。但是由于您已经发布了它,因此网络爬虫有可能已将其拾取,因此我强烈建议您更改 API 密钥(如果可能)。

标签: android android-intent android-youtube-api


【解决方案1】:

创建一个名为 Sublecture 的自定义类,而不是 sublectures 是一个字符串数组。此类存储讲座的名称(第 1 部分或第 2 部分)以及相应 YouTube 视频的 URL。 Sublecture 实际上只是一类 getter 和 setter。然后,创建自定义 ArrayAdapter &lt;Sublecture&gt;,而不是 ArrayAdapter&lt;String&gt;。见这里:

How to use ArrayAdapter<myClass>

我所描述的实际上是您将在 Android 中做的最常见的事情之一,所以花点时间学习如何去做。

【讨论】:

  • 我创建了自定义适配器,但如何为两个列表项设置 2 个不同的 URL???
  • 我猜你的意思是你有一个包含很多子讲座的 ListView。每个子讲座都有两个视频。 Sublecture 类应该保存两个 URL 的值。适配器应该扩展一个包含至少两个按钮(每个视频一个)的列表项布局。然后,在适配器的 getView() 方法中,您可以对其进行设置,以便在按下 button1 时将您带到该子课程的视频 1,而 button2 将您带到该子课程的视频 2。
  • @Gaving Wright。是的,你是对的。但我不知道我应该把它放在代码中。我创建了一个自定义适配器,然后碰壁了。只是我是这方面的初学者并且有点挣扎。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多