首页 > 解决方案 > 自定义适配器中的意图

问题描述

嗨,我需要在我的 onClick 中添加 Intent,在要与我的 Arraylist 连接的适配器中,并为 listview 中的不同项目传递不同的链接。我的代码在下面,所以我需要进行哪些更改?如何将 Intent 与我的适配器连接以及我需要使用哪些命令

 package com.example.android.extremebiceps;

import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;



public class Workout extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_workout);

        //kreirenje arraja
        final ArrayList<Word> workouts = new ArrayList<Word>();
        workouts.add(new Word("workout1",R.layout.activity_main));
        workouts.add(new Word("workout2",R.layout.activity_main));
        workouts.add(new Word("workout3",R.layout.activity_main));
        workouts.add(new Word("workout4",R.layout.activity_main));
        workouts.add(new Word("workout5",R.layout.activity_main));




        // kreiranje variable za pracenje trenutne pozicije


        WordAdapter adapter=new WordAdapter(this,workouts);


        ListView listView = (ListView) findViewById(R.id.list);

        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long l) {

                Word word = workouts.get(position);


            }
        });

    }
}

我的适配器

package com.example.android.extremebiceps;

import android.app.Activity;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.TextView;

import java.util.ArrayList;

public class WordAdapter extends ArrayAdapter<Word> {
    public WordAdapter(Activity context, ArrayList<Word> Workouts) {
        // Here, we initialize the ArrayAdapter's internal storage for the context and the list.
        // the second argument is used when the ArrayAdapter is populating a single TextView.
        // Because this is a custom adapter for two TextViews and an ImageView, the adapter is not
        // going to use this second argument, so it can be any value. Here, we used 0.
        super(context, 0, Workouts);
    }
    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        // Check if the existing view is being reused, otherwise inflate the view
        View listItemView = convertView;
        if (listItemView == null) {
            listItemView = LayoutInflater.from(getContext()).inflate(
                    R.layout.list_item, parent, false);
        }
        Word currentWord = getItem(position);

        //nadzi button
        Button buttonView = (Button) listItemView.findViewById(R.id.Button1);
        //uzmi tekst iz buttona
        buttonView.setText(currentWord.getDefaultButton());




        return listItemView;
    }

和我的 Word 课

package com.example.android.extremebiceps;


public class Word {

    //trazenje buttona
    private String mDefaultButton;

    //Trazenje intenta
    private int mLink;

    public Word(String DefaultButton,int Link){
        mDefaultButton=DefaultButton;
        mLink=Link;
    }

    //uzimanje buttona
    public String getDefaultButton(){
        return mDefaultButton;
    }
    //uzimanje intenta
    public int getLink(){
        return mLink;
    }
}

当我尝试在我的 onItemClickListener 中添加 Toast 时它不起作用。为什么

标签: javaandroidcustom-arrayadapter

解决方案


listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long l) {
        Word word = workouts.get(position);
        Intent in = new Intent(Workout.this, NextActivity.class);
        in.putExtra("Word", wokouts.get(position).yourMethod());
        startActivity(in);

     }
});

推荐阅读