【问题标题】:passing intent from inside a ListView从 ListView 内部传递意图
【发布时间】:2013-12-08 06:26:00
【问题描述】:

我有一个 ListView 代码,当单击 listview 选项时,它会发出敬酒消息。 MainActivity.java

public class MainActivity extends ListActivity {

    static final String[] FRUITS = new String[] { "Apple", "Avocado", "Banana",
            "Blueberry", "Coconut", "Durian", "Guava", "Kiwifruit",
            "Jackfruit", "Mango", "Olive", "Pear", "Sugar-apple" };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // no more this
        // setContentView(R.layout.list_fruit);

        setListAdapter(new ArrayAdapter<String>(this, R.layout.activity_main,FRUITS));

        ListView listView = getListView();
        listView.setTextFilterEnabled(true);

        listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // When clicked, show a toast with the TextView text
                Toast.makeText(getApplicationContext(),
                ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
            }
        });

    }

}

xml 文件是:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="20sp" >
</TextView>

我想要做的是在我单击显示的列表视图选项中的一个选项时传递一个意图

这是我目前尝试过的代码

String str = ((TextView) view).getText().toString();
                Log.i(str, str + "");
//              str2 = FRUITS[Position];
                String s = str + ".class";
                Log.d(s, s + "");
                Intent myintent = new Intent(getApplicationContext(), ListViewSampleClass.class);
                startActivity(myintent);

【问题讨论】:

  • @Emmanuel 请务必阅读最后一行
  • 我的意思是“到目前为止你尝试过什么?这个问题已经被问过很多次了,你没有表现出任何研究努力”
  • @Emmanuel 我要编辑并发布我迄今为止尝试过的内容

标签: java android listview android-intent android-listview


【解决方案1】:

试试这个方法

 listView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // This will call another activity using intent
            Intent myintent = new Intent(getApplicationContext(), youcalssname.class);
            startActivity(myintent);

        }
    });

【讨论】:

  • 这行得通。但我如何具体去一个预期的观点。例如,我选择了苹果,那么视图将转到 apple.class。
  • 您需要为position 放置开关盒。 onItemClick() 中的 position 参数表示已单击的项目。因此,让我们假设如果苹果位置为 2,您可以根据该位置显示类。如果您发现任何困难,请告诉我。
  • 要获取所选项目的名称,您可以使用FRUITS[position] 这将给出已选择项目的名称
  • 如何将 FRUITS[position] 放到字符串中?
  • FRUITS[position] 将仅返回字符串值,因为 'FRUITS` 是字符串数组
【解决方案2】:

公共类 MainActivity 扩展 ListActivity {

static final String[] FRUITS = new String[] { "Apple", "Avocado", "Banana",
        "Blueberry", "Coconut", "Durian", "Guava", "Kiwifruit",
        "Jackfruit", "Mango", "Olive", "Pear", "Sugar-apple" };

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // no more this
    // setContentView(R.layout.list_fruit);

    setListAdapter(new ArrayAdapter<String>(this, R.layout.activity_main,FRUITS));

    ListView listView = getListView();
    listView.setTextFilterEnabled(true);

    listView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // When clicked, show a toast with the TextView text
            Toast.makeText(getApplicationContext(),
            ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
            passIntentToAnotherActivity();
        }
    });

}

private void passIntentToAnotherActivity() {
    Intent myIntent = new Intent();
    ...
    // Rest of your intent code goes here. 
} 

}

【讨论】:

    猜你喜欢
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多