【问题标题】:How to open an implicit intent with recyclerview so that it opens a youtube video如何使用 recyclerview 打开一个隐式意图,以便它打开一个 youtube 视频
【发布时间】:2018-05-13 11:10:06
【问题描述】:
public class AnimateToolbar extends AppCompatActivity {

    private CollapsingToolbarLayout collapsingToolbar;
    private AppBarLayout appBarLayout;


    private DessertAdapter dessertAdapter;

    private List<Dessert> persons;
    private RecyclerView rv;

    private Menu collapsedMenu;
    private boolean appBarExpanded = true;

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

        setContentView(R.layout.activity_animate_toolbar);

        final Toolbar toolbar = (Toolbar) findViewById(R.id.anim_toolbar);
        setSupportActionBar(toolbar);
        if (getSupportActionBar() != null)
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        appBarLayout = (AppBarLayout) findViewById(R.id.appbar);

        collapsingToolbar = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar);
        collapsingToolbar.setTitle(getString(R.string.android_desserts));

        Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
                R.drawable.header);

        Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
            @SuppressWarnings("ResourceType")
            @Override
            public void onGenerated(Palette palette) {
                int vibrantColor = palette.getVibrantColor(R.color.primary_500);
                collapsingToolbar.setContentScrimColor(vibrantColor);
                collapsingToolbar.setStatusBarScrimColor(R.color.black_trans80);
            }
        });

私人无效初始化数据(){ 人 = 新的 ArrayList(); //当用户点击此卡片视图或回收视图时,将在 youtube 应用程序或用户移动设备上可用的浏览器中打开一个 youtube。

        persons.add(new Dessert("Engine", "5.9-litre V12 engine ", R.mipmap.enginelogo));
        persons.add(new Dessert("Lavery Maiss", "25 years old", R.drawable.lavery));
        persons.add(new Dessert("Lillie Watts", "35 years old", R.drawable.lillie));
    }
//I want to open an intent with the first position of persons so that it opens up a youtube video.
    private void initializeAdapter(){
        DessertAdapter adapter = new DessertAdapter(persons);
        rv.setAdapter(adapter);
    }

//I tried different approaches but none of them have worked out for me so far please help





//this is the adapter on which the upper recyclerview is based on


public class DessertAdapter extends RecyclerView.Adapter<DessertAdapter.DessertVh> {



    public static class DessertVh extends RecyclerView.ViewHolder{

        CardView cv;
        TextView personName;
        TextView personAge;
        ImageView personPhoto;


        DessertVh(View itemView){
            super(itemView);
            cv = (CardView)itemView.findViewById(R.id.cv);
            personName = (TextView)itemView.findViewById(R.id.person_name);
            personAge = (TextView)itemView.findViewById(R.id.person_age);
            personPhoto = (ImageView) itemView.findViewById(R.id.person_photo);
            }

            }


    List<Dessert> persons;

    DessertAdapter(List<Dessert> persons){this.persons = persons;}


    @Override

    public void onAttachedToRecyclerView(RecyclerView recyclerView){


        super.onAttachedToRecyclerView(recyclerView);
        }

    @Override
    public DessertVh onCreateViewHolder(ViewGroup viewGroup, int i){


        View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_dessert, viewGroup,false);
        DessertVh dvh = new DessertVh(v);
        return dvh;

    }

    @Override
    public void onBindViewHolder(DessertVh dessertVh, int i){
        dessertVh.personName.setText(persons.get(i).name);
        dessertVh.personAge.setText(persons.get(i).age);
        dessertVh.personPhoto.setImageResource(persons.get(i).photoId);
        }


    @Override
    public int getItemCount(){return persons.size();}



}

【问题讨论】:

    标签: java android android-recyclerview android-cardview


    【解决方案1】:

    您可以像这样设置点击每个项目。您需要在列表项中传递一些视频网址。您将使用该 url 开始 youtube 活动。

    List<Dessert> persons;
    Context context
    DessertAdapter(Context context, List<Dessert> persons)
    {
      this.persons = persons;
      this.context = context;
    }
    
    ...
    
    @Override
    public void onBindViewHolder(DessertVh dessertVh, int i){
       ...
    
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Uri url = Uri.parse("vnd.youtube://" + video_id); // get your url from list item or your code.
                Intent intent = new Intent(Intent.ACTION_VIEW, url);
                context.startActivity(intent);
            }
        });
        }
    

    像这样调用你的适配器

        DessertAdapter adapter = new DessertAdapter(AnimateToolbar.this, persons);
        rv.setAdapter(adapter);
    

    【讨论】:

    • 但它适用于每个回收视图,但我希望它在用户单击特定视图时打开。
    • holder.itemView.setOnClick更改为您要点击的项目。
    • 我也想将同一个适配器用于其他活动。
    • 这取决于您的视图是否与其他活动中的所有列表相同。
    【解决方案2】:

    试试这样的: (在 RecyclerView 的 OnItemClicklistener 中):

    Intent intent = new Intent(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_TEXT, persons.get(position); intent.setPackage("com.google.android.apps.youtube.app"); startActivity(intent);
    

    我希望这会有所帮助! :D

    【讨论】:

    • 如果他知道如何在recyclerView 中设置onClick,我想他会自己做。您的答案中也应该包含 onclick 方法
    猜你喜欢
    • 1970-01-01
    • 2020-11-30
    • 2018-05-09
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    相关资源
    最近更新 更多