2014-12-06 55 views
-1

嗨,大家我需要幫助我有一個列表中的聯繫人的應用程序,我們可以選擇,我想在列表視圖中選擇de值,並將其發送到名爲View_2的第二個活動中.xml我把代碼放在最後(道歉我的英語我是法語)。 我知道我必須使用PutExtra和GetExtra,但我需要使用get(position)方法獲取值,但我不知道如何。如何獲得listview值併發送其他活動

這裏是我的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); 
} 

}

她是我的第一個佈局activity_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" /> 

回答

0

既然你將它定義爲一個選擇題,請致電getCheckedItemPositions()在你的按鈕點擊收聽。

這將返回一個SparseBooleanArray,它將檢查的項目映射到它們在列表視圖中的位置。現在只需瀏覽一下這張地圖,就可以查看到第一個位置。

你似乎很奇怪你只想發送一個值。如果是這種情況(即您一次只需要檢查一個項目),請將您的列表視圖的選擇模式設置爲CHOICE_MODE_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); 
} 
+0

謝謝zouzou我嘗試 – sidi 2014-12-06 20:51:45

+0

你能解釋我更多嗎? – sidi 2014-12-06 21:17:40

+0

@sidi看到我的編輯,它應該看起來像這樣(未經測試) – 2014-12-06 21:22:52

1

您需要實現OnItemClickListener()與聽者設置爲ListView如下

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 
} 

編輯 在按鈕單擊

試試這個按鈕點擊

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); 
    } 
} 
+0

OP希望發送按鈕的點擊中選中的值,而不是在列表視圖中單擊項目時。 – 2014-12-06 20:55:07

+0

如何使用它?因爲當我添加你的建議我得到錯誤消息:( – sidi 2014-12-06 20:58:10

+0

@Zouzou哦是的。抱歉沒有正確地閱讀這個問題..需要刪除我的答案然後 – GoCrazy 2014-12-06 20:58:48

相關問題