如何从listview获取变量并传递给另一个活动?

时间:2016-04-09 12:59:16

标签: java android listview android-activity tabs

因此,我希望传递一个名称,该名称插入用户选择的列表视图中。 我想将该名称(即字符串)传递给另一个活动。

我的 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;
}

然后我将通过&#34;名称&#34;进入另一项活动: 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)上的消息

1 个答案:

答案 0 :(得分:0)

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