0

これは、リストビューのポピュレーションアイテムである私のクラスです。うまくいきます.listitemをクリックするとonItemClickメソッドが実行されますが、そこからインテントを渡すと、インテントが渡されません.plzは私を助けてください.

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);
    }

これは onItemClick() からの私のクラスです。アクティビティ クラスに渡したいのですが、その方法を教えてください。

4

2 に答える 2

0

onItemClick((AdapterView adapter, View v, int position, long id) で BaseAdapter を拡張するクラスへのコンストラクターを作成しました。そこから簡単に意図を渡すことができます...それは私のために働いています、とにかく助けてくれてありがとう私はたくさんの人

コンストラクターで位置を渡し、選択したアイテムでやりたいことを何でもできます。

于 2012-08-13T09:03:44.083 に答える
0

これを試してみてください... 役に立ちます。

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);
        }
于 2012-08-13T08:30:15.940 に答える