Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取listview值并发送其他活动_Java_Android_Android Layout_Listview - Fatal编程技术网

Java 如何获取listview值并发送其他活动

Java 如何获取listview值并发送其他活动,java,android,android-layout,listview,Java,Android,Android Layout,Listview,大家好,我需要帮助,我有一个应用程序,在列表中有联系人,我们可以选择,我想在listview中选择de value,并将其发送到我的第二个名为View_2.xml的活动中。我将代码放在最后(抱歉,我的英语,我是法语)。 我知道我必须使用PutExtra和GetExtra,但我需要使用get(position)方法获取值,但我不知道如何获取 这是我的mainactivity.java package com.example.messagegroupe2; import android.app.A

大家好,我需要帮助,我有一个应用程序,在列表中有联系人,我们可以选择,我想在listview中选择de value,并将其发送到我的第二个名为View_2.xml的活动中。我将代码放在最后(抱歉,我的英语,我是法语)。 我知道我必须使用PutExtra和GetExtra,但我需要使用get(position)方法获取值,但我不知道如何获取

这是我的mainactivity.java

package com.example.messagegroupe2;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;

public class MainActivity extends Activity {

private String[] mStrings = {
        "Thomas", "Audrey", "Pierre", "Paul", "Jacques",
};

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

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, mStrings);

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

    listView.setAdapter(adapter);       

    final Button okButton = (Button) findViewById(R.id.Mybutton);
    okButton.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, View_2.class);
            intent.putExtra(mStrings[position], );
            startActivity(intent);

        }

    });
}

@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;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
package com.example.messagegroupe2;
导入android.app.Activity;
导入android.os.Bundle;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.content.Intent;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.ListView;
公共类MainActivity扩展了活动{
私有字符串[]mStrings={
“托马斯”、“奥黛丽”、“皮埃尔”、“保罗”、“雅克”,
};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u多项选择,mStrings);
ListView ListView=(ListView)findViewById(R.id.ListView);
setAdapter(适配器);
最终按钮OK按钮=(按钮)findViewById(R.id.Mybutton);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
意向意向=新意向(MainActivity.this,View_2.class);
意图.额外(mStrings[位置],);
星触觉(意向);
}
});
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
}

她是我的第一个布局活动_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"  
android:gravity="center"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.ue236_grpE.messagegroupe.MainActivity"
android:background="#2ECC71"  >

   <LinearLayout android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"    >

        <ListView
            android:id="@+id/listview"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="100dp"
            android:orientation="horizontal"
            android:scrollbarStyle="insideOverlay"
            android:choiceMode="multipleChoice" />

   </LinearLayout>

   <Button
       android:id="@+id/Mybutton"
       android:layout_width="100dp"
       android:layout_height="50dp"
       android:layout_centerHorizontal="true"
       android:layout_marginTop="350dp"
       android:text="@string/value_button"
       android:background="#3498db"
       android:textColor="#FFFFFF" />

在我拥有其他视图并希望获取列表视图的值并在TextView的此视图中进行设置后:

      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:background="#2ECC71"
   android:gravity="center"
   android:orientation="vertical"
   android:paddingBottom="@dimen/activity_vertical_margin"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   tools:context="com.ue236_grpE.messagegroupe.MainActivity" >

   <Button
       android:id="@+id/button_valid"
       android:layout_width="100dp"
       android:layout_height="50dp"
       android:layout_centerHorizontal="true"
       android:layout_marginTop="300dp"
       android:layout_marginRight="10dp"
       android:text="@string/valid_button"
       android:background="#3498db"
       android:textColor="#FFFFFF" />
      <Button
       android:id="@+id/button_cancel"
       android:layout_width="100dp"
       android:layout_height="50dp"
       android:layout_marginTop="300dp"
       android:layout_toRightOf="@id/button_valid"
       android:text="@string/cancel_button"
       android:background="#3498db"
       android:textColor="#FFFFFF" />

      <TextView
          android:id="@+id/textView1"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:text="TextView" />


由于您将其定义为多选,请在按钮单击侦听器中调用
getCheckedItemPositions()

这将返回一个
SparseBooleanArray
,它将选中的项目映射到它们在listview中的位置。现在只要浏览这张地图,你就可以检查第一个位置

@Override
public void onClick(View v) {
    Intent intent = new Intent(MainActivity.this, View_2.class);
    SparseBooleanArray sparseArray = lv.getCheckedItemPositions();
    for(int i = 0; i < sparseArray.size(); i++) {
        if(sparseArray.get(i)) { //the item at position i is checked
            intent.putExtra("item"+i, mStrings[i]);
        }
    }
    startActivity(intent);
}
看起来很奇怪,你只想发送一个值。如果是这种情况(即,您一次只希望检查一个项目),请将listview的选择模式设置为
choice\u mode\u SINGLE
,然后只需调用
getCheckedItemPosition()
即可检查项目的位置

@Override
public void onClick(View v) {
    Intent intent = new Intent(MainActivity.this, View_2.class);
    SparseBooleanArray sparseArray = lv.getCheckedItemPositions();
    for(int i = 0; i < sparseArray.size(); i++) {
        if(sparseArray.get(i)) { //the item at position i is checked
            intent.putExtra("item"+i, mStrings[i]);
        }
    }
    startActivity(intent);
}
@覆盖
公共void onClick(视图v){
意向意向=新意向(MainActivity.this,View_2.class);
SparseBooleanArray sparseArray=lv.getCheckEditePositions();
对于(int i=0;i
您需要实现
OnItemClickListener()
并将侦听器设置为
列表视图,如下所示

ListView listView = (ListView) findViewById(R.id.listview); 
listView.setAdapter(adapter); 
listView.setOnItemClickListener(this);
在“打开项目”中单击

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
    adapterView.getSelectedItem().toString(); //String on OnClick
   // Create an Intent and send
} 
@覆盖
public void onItemClick(AdapterView AdapterView,View视图,int i,long l){
adapterView.getSelectedItem().toString();//OnClick上的字符串
//创建意图并发送
} 
编辑 点击按钮

点击按钮试试这个

SparseBooleanArray checked = listview.getCheckedItemPositions();// Get Lists of all checked Items

for (int i = 0; i < listview.getAdapter().getCount(); i++) {//Loop it to get the values
if (checked.get(i)) {
    // Call the Intent Here
        Intent intent = new Intent(MainActivity.this, View_2.class);
        intent.putExtra(yourkey,mStrings[i]);
        startActivity(intent);
    }
}
SparseBooleanArray checked=listview.getCheckedItemPositions();//获取所有选中项目的列表
对于(inti=0;i
OP希望发送在按钮单击时检查的值,而不是在列表视图中单击项目时。如何使用它?因为当我添加您的建议时,我会收到错误消息:(@Zouzou哦,是的,很抱歉没有正确阅读问题..需要删除我的答案then@sidi您想在单击按钮或单击项目时发送它吗?@Vino我想选中listview并在我单击视图中的按钮时发送它。\u 2.xml textView您能解释一下吗?@sidi看到我的编辑,它应该是这样的(未测试)