java - 如何从 ListView 获取变量并传递给另一个 Activity ?

标签 java android listview android-activity tabs

因此,我想传递例如插入用户在 ListView 中选择的行中的名称。 我想将该名称(即字符串)传递给另一个 Activity 。

我的Tab1.java(onCreateView)

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v =inflater.inflate(R.layout.tab1,container,false);

    arrItems = getResources().getStringArray(R.array.fruitName);
    images = getResources().obtainTypedArray(R.array.fruitImages);
    prezzi = getResources().getStringArray(R.array.Price);
    listView = (ListView) v.findViewById(R.id.customListView);
    listAdapter = new ListAdapter(getContext(),arrItems,images,prezzi);
    listView.setAdapter(listAdapter);
    listView.setScrollingCacheEnabled(false);
    listAdapter.setCustomButtonListener(this);


    listView.setOnItemClickListener(
            new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
               //     final String selected = (String) parent.getSelectedItem();
                    Intent i = new Intent(getActivity(), Pop.class);
                  //  i.putExtra("name", selected);
                 //   Toast.makeText(getActivity(), selected, Toast.LENGTH_LONG).show();
                    startActivity (i);
                }
            }
    );

    return v;
}

然后我会将“名称”传递到另一个 Activity 中,即:Pop.java

  @Override
protected void onCreate(Bundle savedInsanceState)
{
    super.onCreate(savedInsanceState);

    setContentView(R.layout.popwindow);

    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    ImageView img = (ImageView) findViewById(R.id.imageView1);
    TextView txtgrande = (TextView) findViewById(R.id.textView3);
    TextView txtpiccolo = (TextView) findViewById(R.id.textView5);
    TextView txtprezzo = (TextView) findViewById(R.id.textView12);

    int larghezza = dm.widthPixels;
    int altezza = dm.heightPixels;

    getWindow().setLayout((int) (larghezza * .9), (int) (altezza * .7));

    Intent in = getIntent();
    String name = in.getStringExtra(("name"));//gets name from intent

                                         /** ---------------- PARTE VERSIONE 2.0 (LISTVIEW DENTRO LE TAB) ------------------------ */
    if(name == "Alici fritte marinate")
    {
        img.setImageResource(R.drawable.alicifritte);
        txtgrande.setText("Alici fritte marinate");
        txtprezzo.setText("9,50");
        txtpiccolo.setMovementMethod(new ScrollingMovementMethod());
        txtpiccolo.setText("Presentazione: \n" +
                " Le alici fritte marinate sono un antipasto semplice ma allo stesso modo stuzzicante:" +
                " \n si preparano aprendo le alici a libro, infarinandole e friggendole per poi lasciarle marinare per " +
                "una nottata in un composto di aceto, vino bianco, peperoncino, cipolla e aglio." +
                "\n\n Ingedienti:" +
                "\n -Acciughe (alici) fresche 400 gr \n -Aceto di vino bianco 300 ml \n -Vino bianco 250 ml \n -Peperoncino piccante fresco \n" +
                "-1 Sale q.b. \n -Aglio \n -2 spicchi Cipolle (cipollotto fresco o scalogno) \n -1 Farina q.b. per infarinare le alici");
    }
    if(name == "Alette di pollo")
    {
        img.setImageResource(R.drawable.alettedipollo);
        txtgrande.setText("Alette di pollo");
        txtprezzo.setText("8,50");
        txtpiccolo.setMovementMethod(new ScrollingMovementMethod());
        txtpiccolo.setText("Le alette di pollo finto fritto al forno sono un antipasto appetitoso da gustare in compagnia! "+
                " \n Questa prelibatezza di solito viene gustata fritta, come la ricetta americana vuole, ma " +
                "noi vi proponiamo una variante che vede le alette impanate e saltate in padella per poi " +
                " essere passate al grill del forno in modo d risultare ugualmente croccanti e irresistibili! \n\nIngredienti:\n "+
                "-Pollo ali 9"+
                "-Farina integrale 60 g\n" +
                "-Paprika 2 g\n" +
                "-Pangrattato 20 g\n" +
                "-Cognac 50 g\n" +
                "-Olio di oliva extravergine 50 g\n" +
                "-Sale fino 3 g\n" +
                "-Riso venere 150 g\n" +
                "-Carote 100 g");
    }

我在string.xml中为 ListView 创建了数组

<resources>
<string name="app_name">Ristorante</string>

<!--Antipasti-->
<string-array name="fruitName">
    <item>Alici fritte marinate</item>
    <item>Alette di pollo</item>
    <item>Alici marinate</item>
</string-array>
<string-array name="fruitImages">
    <item>@mipmap/alicifritte</item>
    <item>@mipmap/alettedipollo</item>
    <item>@mipmap/alicimarinate</item>
</string-array>
<string-array name="Price">
    <item>9,50 $</item>
    <item>8,50 $</item>
    <item>9,00 $</item>
</string-array>

<!--Primi piatti-->
<string-array name="PrimiName">
    <item>Spaghetti allo scoglio</item>
    <item>Penne al fumè</item>
    <item>Agnolotti</item>
</string-array>
<string-array name="PrimiImages">
    <item>@mipmap/spaghettiscoglio</item>
    <item>@mipmap/pennefume</item>
    <item>@mipmap/agnolotti</item>
</string-array>
<string-array name="PrimiPrice">
    <item>9,00 $</item>
    <item>9,50 $</item>
    <item>10,50 $</item>
</string-array>

<!--Secondi piatti-->
<string-array name="SecondiName">
    <item>Agnello cacio e ova</item>
    <item>Agnello a scottadito</item>
    <item>Anatra alla arancia</item>
</string-array>
<string-array name="SecondiImages">
    <item>@mipmap/agnellocacioeova</item>
    <item>@mipmap/abbacchioascottadito</item>
    <item>@mipmap/anatraarancia</item>
</string-array>
<string-array name="SecondiPrice">
    <item>8,50 $</item>
    <item>9,50 $</item>
    <item>10,00 $</item>
</string-array>

<!--Contorni-->
<string-array name="ContorniName">
    <item>Asparagi Giallo Zabaione</item>
    <item>Barba di frate</item>
    <item>Barbabietole agrodolci</item>
</string-array>
<string-array name="ContorniImages">
    <item>@mipmap/asparagiallozabaione</item>
    <item>@mipmap/barbadifrate</item>
    <item>@mipmap/barbabietoleagrodolci</item>
</string-array>
<string-array name="ContorniPrice">
    <item>4,00 $</item>
    <item>4,50 $</item>
    <item>3,50 $</item>
</string-array>

<!--Dolci-->
<string-array name="DolciName">
    <item>Bellini cocktail</item>
    <item>Caffè shakerato</item>
    <item>Cosmopolitan</item>
</string-array>
<string-array name="DolciImages">
    <item>@mipmap/bellinicocktail</item>
    <item>@mipmap/caffeshakerato</item>
    <item>@mipmap/cosmopolitan</item>
</string-array>
<string-array name="DolciPrice">
    <item>2,50 $</item>
    <item>3,00 $</item>
    <item>3,00 $</item>
</string-array>

<!--Bevande-->
<string-array name="BevandeName">
    <item>Alfajores</item>
    <item>Alberi di natale</item>
    <item>Amaretti</item>
</string-array>
<string-array name="BevandeImages">
    <item>@mipmap/alfajores</item>
    <item>@mipmap/alberinatale</item>
    <item>@mipmap/amaretti</item>
</string-array>
<string-array name="BevandePrice">
    <item>4,50 $</item>
    <item>5,00 $</item>
    <item>2,50 $</item>
</string-array>

!!一行中有两个按钮(+ 和 -),也许它们不会让我选择该行。

问题是,如果我选择一行,它不会显示我放在 Tab1.java(Toast)上的消息

最佳答案

listView.setOnItemClickListener(
        new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
           //     final String selected = (String) parent.getSelectedItem();
                Intent i = new Intent(getActivity(), Pop.class);
             //this would put your name into a intent extra
                i.putextra("name", arritems.get(position);

              //  i.putExtra("name", selected);
             //   Toast.makeText(getActivity(), selected, Toast.LENGTH_LONG).show();
                startActivity (i);
            }
        }

获得额外的

String fruitName = i.getStringExtra("name");

关于java - 如何从 ListView 获取变量并传递给另一个 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36517095/

相关文章:

java - 使用YouTube API v3更新YouTube播放列表状态,标题和说明

java - Intellij思想: from sources to project using Maven

java - 使用 NfcV tag.transceive 写入标签

Android alarmManager 进入循环

java - 如何通过 ListView Item 链接到网站

android - 从自定义 ListView 中的 TextView -w/Button 获取文本

java - 注入(inject) Google 和 Facebook 连接工厂

java - Jenkins java.lang.OutOfMemoryError : PermGen space - Facing frequently even after increasing the perm memory

android - 发送静音短信

android - ListView不可点击,行中的所有小部件都是TextView