Android 从扩展ListView的类传递意图

Android 从扩展ListView的类传递意图,android,android-intent,android-listview,Android,Android Intent,Android Listview,这是我的类,它在列表视图中填充项目,事情进展顺利,单击列表项目时执行onItemClick方法,但是当我从那里传递意图时,它不会传递意图,请帮助我 public class VideosListView extends ListView implements android.widget.AdapterView.OnItemClickListener { private List<Video> videos; private VideoClickListener videoClic

这是我的类,它在列表视图中填充项目,事情进展顺利,单击列表项目时执行onItemClick方法,但是当我从那里传递意图时,它不会传递意图,请帮助我

public class VideosListView extends ListView implements android.widget.AdapterView.OnItemClickListener {

private List<Video> videos;
private VideoClickListener videoClickListener;
MainActivity ma;
private Context mcontext;

public VideosListView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

public VideosListView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public VideosListView(Context context) {
    super(context);
    mcontext=context;
}

public void setVideos(List<Video> videos){
    this.videos = videos;
    VideosAdapter adapter = new VideosAdapter(getContext(), videos);
    setAdapter(adapter);
    // When the videos are set we also set an item click listener to the list
    // this will callback to our custom list whenever an item it pressed
    // it will tell us what position in the list is pressed
    setOnItemClickListener(this);
}

// Calling this method sets a listener to the list
// Whatever class is passed in will be notified when the list is pressed
// (The class that is passed in just has to 'implement VideoClickListener'
// meaning is has the methods available we want to call)
public void setOnVideoClickListener(VideoClickListener l) {
    videoClickListener = l;

}

@Override
public void setAdapter(ListAdapter adapter) 
{
    super.setAdapter(adapter);
}

// When we receive a notification that a list item was pressed
// we check to see if a video listener has been set
// if it has we can then tell the listener 'hey a video has just been clicked' also passing the video
@Override
public void onItemClick(AdapterView<?> adapter, View v, int position, long id) 
{
    Intent intent = new Intent(mcontext,AnVideoView.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
    mcontext.startActivity(intent); 

    Log.i("VideoListView", "I am Clicked");
    if(videoClickListener != null)
    {
        videoClickListener.onVideoClicked(videos.get(position));
        Log.d("My Position ","position is" + position);
    }
公共类VideosListView扩展ListView实现android.widget.AdapterView.OnItemClickListener{
私人名单视频;
私人视频点击监听器视频点击监听器;
主要活动ma;
私有上下文;
公共VideosListView(上下文、属性集属性、int-defStyle){
超级(上下文、属性、定义样式);
}
公共VideosListView(上下文、属性集属性){
超级(上下文,attrs);
}
公共VideosListView(上下文){
超级(上下文);
mcontext=上下文;
}
公共视频(列出视频){
这个。视频=视频;
VideosAdapter adapter=新的VideosAdapter(getContext(),videos);
设置适配器(适配器);
//设置视频后,我们还将一个项目click listener设置到列表中
//每当按下一个项目时,这将回调到我们的自定义列表
//它会告诉我们列表中的哪个位置被按下
SetonicClickListener(本);
}
//调用此方法将侦听器设置为列表
//按下列表时,将通知传入的任何类
//(传入的类只需“实现VideoClickListener”
//意思是有我们想要调用的可用方法)
公共无效设置VideoClickListener(VideoClickListener l){
videoClickListener=l;
}
@凌驾
public void setAdapter(ListAdapter适配器)
{
super.setAdapter(适配器);
}
//当我们收到按下列表项的通知时
//我们检查是否设置了视频侦听器
//如果有,我们可以告诉听者“嘿,刚刚点击了一个视频”,并传递视频
@凌驾
公共控件单击(适配器视图适配器,视图v,内部位置,长id)
{
Intent Intent=newintent(mcontext,AnVideoView.class).setFlags(Intent.FLAG\u ACTIVITY\u new\u TASK);
mcontext.startActivity(意图);
Log.i(“视频列表视图”,“我被点击”);
如果(videoClickListener!=null)
{
videoClickListener.onVideoClicked(videos.get(position));
Log.d(“我的位置”,“位置是”+位置);
}
这是我的类nonitemclick()中的snow,我想传递给一个活动类,如何做,thanx帮助

试试这个。。。 它会帮助你的

Activity activity;

    public VideosListView(Activity activity) {
        super(context);
        this.activity=activity;
    }


    @Override
    public void onItemClick(AdapterView<?> adapter, View v, int position, long id) 
    {
        Intent intent = new Intent(activity,AnVideoView.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
        activity.startActivity(intent); 

        Log.i("VideoListView", "I am Clicked");
        if(videoClickListener != null)
        {
            videoClickListener.onVideoClicked(videos.get(position));
            Log.d("My Position ","position is" + position);
        }
活动;
公共视频浏览(活动){
超级(上下文);
这个。活动=活动;
}
@凌驾
公共控件单击(适配器视图适配器,视图v,内部位置,长id)
{
Intent Intent=newintent(活动,AnVideoView.class).setFlags(Intent.FLAG\u活动\u新任务);
活动。开始触觉(意图);
Log.i(“视频列表视图”,“我被点击”);
如果(videoClickListener!=null)
{
videoClickListener.onVideoClicked(videos.get(position));
Log.d(“我的位置”,“位置是”+位置);
}
在onItemClick中((适配器视图适配器,视图v,内部位置,长id) 我已经为扩展BaseAdapter的类创建了一个构造函数,然后从那里我们可以很容易地传递我们的意图……它对我很有用,不管怎样,thaks帮了我很多人


我们可以传递constructor中的位置,并对所选项目执行我们想要执行的任何操作。

是onItemClick()工作正常?是的,工作正常,我在日志文件中打印了一些东西,正在打印accurately@pranav如果有任何问题对你有帮助,那么把这个问题标记为已被接受。这在回答别人方面很重要。因为在这个基础上你会得到回答。