【问题标题】:how to GET THE selected value from the list view to be displayed on the second activity?如何从列表视图中获取所选值以显示在第二个活动上?
【发布时间】:2013-12-02 08:43:51
【问题描述】:

我正在创建一个简单的 android 应用程序,该应用程序将使用户选择一个项目,并且此选定项目将使用意图显示在第二个活动中,但问题是我不知道如何使所选值显示只知道如何显示一个特定的值..谁能帮助我????

MainActivity.java

package com.devleb.listviewdemo;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends ListActivity {
    TextView txt;
    private static final String[] items = { "doctor", "engineer", "lawer",
            "developer", "employee", "business man", "auditer", "cashier" };



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setListAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, items));
        txt = (TextView) findViewById(R.id.txt);

    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        // TODO Auto-generated method stub
        super.onListItemClick(l, v, position, id);

        // txt.setText(items[position]);

        Intent i = new Intent(this, SecondActivity.class);
        i.putExtra("testonArray", items);
        startActivity(i);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

SecondActivity.java

package com.devleb.listviewdemo;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.EditText;
import android.widget.TextView;

public class SecondActivity extends Activity {

    TextView txt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        Bundle extras=getIntent().getExtras();
        String [] values = extras.getStringArray ("testonArray");
        txt = (TextView) findViewById (R.id.txt2);
        if (values != null && values.length > 0 && txt != null){
           txt.setText(values [0]);
        }

        }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.second, menu);
        return true;
    }

}

【问题讨论】:

    标签: android arrays android-intent android-listview


    【解决方案1】:

    第一个活动中的代码:

       +@Override
        protected void onListItemClick(ListView l, View v, int position, long id) {
            // TODO Auto-generated method stub
            super.onListItemClick(l, v, position, id);
    
            // txt.setText(items[position]);
    
            // Try to send the items[position] in the intent
            Intent i = new Intent(this, SecondActivity.class);
            i.putExtra("testonArray", items[position].toString());
            startActivity(i);
        }
    

    第二个活动中的代码:

       Bundle extras=getIntent().getExtras();
       String selected_item=extras.getString("testonArray");
       txt = (TextView) findViewById (R.id.txt2);
       txt.setText(selected_item);
    

    【讨论】:

    • 好的,在第二个活动中我应该在代码中写什么来显示选择的值??
    【解决方案2】:

    补充 Virag 的观点,从 Activity 2 获取数据(在 onCreate 中):

    Intent intent = getIntent();
    String value = intent.getStringExtra("testonArray"); //value to get
    

    【讨论】:

      【解决方案3】:

      如果你只想显示你的文本值,你可以使用 Toast...

      Toast.makeText(this, "Here is my toast !", Toast.LENGTH_LONG).show();
      

      或者,您可以使用对话框:

                  AlertDialog.Builder adb = new Builder(this);
                  adb.setMessage("My main message");
                  adb.setNeutralButton("OK", null);
                  adb.show();
      

      您可能想要使用getApplicationContext() 而不是this

      【讨论】:

      • 是的,我知道,但我需要的是从第一个 Activity 的列表视图中显示所选值,以便在第二个 Activity 的文本视图中显示
      【解决方案4】:
      i.putExtra("testonArray", items[position]);
      

      在第二个活动中

      String value=extras.getString("testonArray");
      

      【讨论】:

        【解决方案5】:

        MainActivity onClick

        list.setOnItemClickListener(new OnItemClickListener() 
        {
        @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String  itemValue = (String) list.getItemAtPosition(position);
        
                Intent intent = new Intent(this, SecondActivity.class);
                intent.putExtra(EXTRA_MESSAGE, itemValue);
                startActivity(intent);
            } 
        });
        }
        

        第二个活动

        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        
            Intent intent = getIntent();
            String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
        
            TextView textView = new TextView (this);
            textView.setText(message);
        
            setContentView(textView);}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-21
          • 2023-04-04
          • 2020-05-05
          • 2017-11-25
          • 2012-08-27
          • 2020-04-07
          相关资源
          最近更新 更多