Android 从扩展ListView的类传递意图
这是我的类,它在列表视图中填充项目,事情进展顺利,单击列表项目时执行onItemClick方法,但是当我从那里传递意图时,它不会传递意图,请帮助我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
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如果有任何问题对你有帮助,那么把这个问题标记为已被接受。这在回答别人方面很重要。因为在这个基础上你会得到回答。