如何从列表视图访问 youtube 视频

Posted

技术标签:

【中文标题】如何从列表视图访问 youtube 视频【英文标题】:how to get to youtube video from list view 【发布时间】:2018-11-14 21:56:48 【问题描述】:

我有一个带有适配器的列表视图,该适配器有两个文本视图。 当我按下列表视图上的特定项目时,我想达到特定的意图。例如;如果项目有 textview1="a" 和 textview2="b",则

if(textview2=="b") do something.

我的问题是,我该如何处理 textview2。

谢谢

【问题讨论】:

approach textview2 是什么意思? 你的意思是点击列表视图项获取该数据。 【参考方案1】:

适配器代码:

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

import java.util.List;

public class injuryadapter extends ArrayAdapter<injury>  
    Context context;
    List<injury> objects;
    public injuryadapter(Context context, int resource, int textViewResourceId, List<injury> objects)
    
        super(context, resource, textViewResourceId, objects);
        this.context=context;
        this.objects=objects;
    

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    
        LayoutInflater layoutInflater = ((Activity)context).getLayoutInflater();
        final View view = layoutInflater.inflate(R.layout.activity_injuryadapter,parent,false);

        TextView injuryzone = (TextView)view.findViewById(R.id.injury_zone);
        final TextView injurytype = (TextView)view.findViewById(R.id.injury_type);

        injury temp = objects.get(position);

        injuryzone.setText(String.valueOf(temp.getInjuryZone()));
        injurytype.setText(temp.getInjuryType());

        return view;
    


列表视图出现的活动,我想从中按列表视图中的项目并转到 youtube 上的特定视频:

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity implements View.OnClickListener, AdapterView.OnItemClickListener 
    public ListView lv;
    public static ArrayList<injury> injuryList;
    Button bt1;
    injuryadapter injuryadapter;
    FirebaseAuth firebaseAuth;
    FirebaseUser firebaseUser;
    String vidid;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bt1 = (Button) findViewById(R.id.add_injury);
        bt1.setOnClickListener(this);
        firebaseAuth = FirebaseAuth.getInstance();
        firebaseUser = firebaseAuth.getCurrentUser();
        lv = (ListView) findViewById(R.id.lv);
        injuryList = new ArrayList<injury>();
        injuryadapter= new injuryadapter(this,0,0,injuryList);
        lv.setAdapter(injuryadapter);
        lv.setOnItemClickListener(this);
        showall();
    

    public void showall()\\ method to read the extract the users data from the firebase and put it in the list view
    
        FirebaseDatabase.getInstance().getReference().child("injury").addListenerForSingleValueEvent(new ValueEventListener()
        
            @Override
            public void onDataChange(DataSnapshot dataSnapshot)
            
                for (DataSnapshot child : dataSnapshot.getChildren())
                
                    injury k = child.getValue(injury.class);
                    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
                    if(k.getUid().equals(user.getUid()))
                    
                        injuryList.add(k);
                    
                
                injuryadapter.notifyDataSetChanged();
            
            @Override
            public void onCancelled(DatabaseError error) 
                // Failed to read value
            
        );
    


    public  void signout()
    

        if (firebaseUser!=null)
        
            firebaseAuth.signOut();
        
    
    @Override
    public boolean onCreateOptionsMenu (Menu menu)
    
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    

    @Override
    public boolean onOptionsItemSelected (MenuItem item)
    
        switch (item.getItemId())
        
            case R.id.bhp:
                Intent intent = new Intent(this, Main2Activity.class);
                startActivity(intent);
                return true;

            case R.id.logout:
                signout();
                Intent intent1 = new Intent(this, Main2Activity.class);
                startActivity(intent1);
                return true;
        
        return super.onOptionsItemSelected(item);
    

    @Override
    public void onClick(View view)
    
        if (bt1==view)
        
        Intent intent= new Intent(this, addinjury.class);
        startActivity(intent);
        

    

我一开始想用setItemOnClickListener()方法收听列表视图,但我不知道如何处理每个项目的内容。

伤害等级:

 public class injury


        private String InjuryZone;
        private String InjuryType;
        private String Uid;


        public injury()
        

        
        public injury(String injuryZone, String injuryType, String uid)
        
            InjuryZone = injuryZone;
            InjuryType = injuryType;
            Uid = uid;
        

        public String getInjuryZone()
        
            return InjuryZone;
        

        public void setInjuryZone(String injuryZone)
        
            InjuryZone = injuryZone;
        

        public String getInjuryType()
        
            return InjuryType;
        

        public void setInjuryType(String injuryType)
        
            InjuryType = injuryType;
        

        public String getUid()
        
        return Uid;
        

        public void setUid(String uid)
        
        Uid = uid;
        


【讨论】:

【参考方案2】:

尝试在您的列表视图适配器中实现此功能。

    在您的 listview 适配器中初始化 textview1 和 textview2,类似于下面的 getView 函数。

    现在根据要求对受尊重的文本视图进行单独的单击操作。

    public View getView(final int position, View convertView, ViewGroup parent) 
    
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        final View itemView = inflater.inflate(R.layout.sample_layout_item, parent, false);
    
    
    
       TextView textview1 = (TextView) itemView.findViewById(R.id.textview1);
       TextView textview2 = (TextView) itemView.findViewById(R.id.textview2);
    
    
       textview1.setOnClickListener(new View.OnClickListener() 
           @Override
           public void onClick(View v) 
    
               //Write the code that is required for textview1 onclick.
           
       );
    
        textview2.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View v) 
    
                //Write the code that is required for textview2 onclick.
            
        );
    
    
    
    
    
        return itemView;
    
    
    

【讨论】:

我试图把它放在我的代码中。我想做的是打开一个 youtube 视频。为此,我需要使用意图打开一个新活动(youtube 视频),但似乎当我尝试使用 startactivity() 启动活动时它不起作用。 请发布您的代码,以便我们更准确地回答

以上是关于如何从列表视图访问 youtube 视频的主要内容,如果未能解决你的问题,请参考以下文章

从 youtube 获取视图

单击列表视图项目时,Android youtube api可全屏加载视频

如何在颤动中创建加载更多列表视图

从YouTube链接显示在网页视图一个视频

jquery中的列表视图

如何实现覆盖表视图进行搜索?