2016-02-20 77 views
0

新手問題在這裏。所以即時通訊嘗試將標題從1stPage listview傳遞給2ndPage EditText,這意味着如果在1stPage上點擊Title1,2ndPage editText也會顯示Title1。香港專業教育學院瞭解有關額外的意圖,但我不知道如何從列表視圖中獲取數據。先進的tqvm。如何將數據從listview傳遞到另一個活動頁面?

1.MainActivity.java

public class MainActivity extends AppCompatActivity{ 

ListView l1; 
String[] t1={"TITLE 1","TITLE 2"}; 
String[] d1={"Detail 1","Detail 2"}; 
String[] s1={"Content 1", "Content 2"}; 

TextView textView; 

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

    textView = (TextView) findViewById(R.id.title); 

    l1=(ListView)findViewById(R.id.list); 
    l1.setAdapter(new dataListAdapter(t1, d1, s1)); 


} 

class dataListAdapter extends BaseAdapter { 
    String[] Title, Detail, Content; 

    dataListAdapter() { 
     Title = null; 
     Detail = null; 
     Content=null; 
    } 

    public dataListAdapter(String[] text, String[] text1, String[] text3) { 
     Title = text; 
     Detail = text1; 
     Content = text3; 

    } 

    public int getCount() { 
     // TODO Auto-generated method stub 
     return Title.length; 
    } 

    public Object getItem(int arg0) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 

     LayoutInflater inflater = getLayoutInflater(); 
     View row; 
     row = inflater.inflate(R.layout.custom, parent, false); 
     final TextView title, detail, detail2; 
     title = (TextView) row.findViewById(R.id.title); 
     detail = (TextView) row.findViewById(R.id.detail); 
     detail2 = (TextView) row.findViewById(R.id.detail2); 
     title.setText(Title[position]); 
     detail.setText(Detail[position]); 
     detail2.setText(Content[position]); 

     l1.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

       String selected = title.getText().toString(); 
       Intent i = new Intent(getApplicationContext(), Main2Activity.class); 
       i.putExtra("name", selected); 
       startActivity(i); 
      } 
     }); 

     return (row); 
    } 

} 


} 

2.Main2Activity.java

公共類Main2Activity擴展AppCompatActivity {

EditText editText; 

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

    editText = (EditText)findViewById(R.id.et); 

    Intent in = getIntent(); 
    String name = in.getStringExtra(("name")); 
    editText.setText(name); 
} 

} 

回答

1

你應該MainActivity行後聲明這個方法

l1=(ListView)findViewById(R.id.list); 
    l1.setAdapter(new dataListAdapter(t1, d1, s1)); 

    l1.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      String selected = t1[position]; 
      Intent i = new Intent(getApplicationContext(), Main2Activity.class); 
      i.putExtra("name", selected); 
      startActivity(i); 
     } 
    }); 

dataListAdapter

在另一活動中移除,使用下面的方法

Bundle extras = getIntent().getExtras(); 
String name = extras.getString("name"); 
editText.setText(name); 

希望它會工作拿到冠軍。

+0

OO。我試過了。 1,我使用String selected = title.getText()。toString(),但由於「title」是在getView()方法中聲明的,所以我不能訪問它。 –

+1

嘗試'字符串selected = t1 [position];'.... – ELITE

+0

然後我試圖宣佈textView =(TextView)findViewById(R.id.title);並使用String selected = textView.getText()。toString(),但這也不起作用。也許我不明白的基本概念,因爲即時通訊仍然是新的android。 –

0

在第一個活動中,你應該把這個額外的參數作爲意圖。將MainActivity中的「argument」字符串存儲爲常量並且始終在其他地方引用它也是很好的做法。

public static final String ARG_FROM_MAIN = "argument"; 

//我認爲B.class是你的第二個ativity

Intent intent = new Intent(MainActivity.this, B.class); 
intent.putExtra("argument", "Title1"); 
startActivity(intent); 

然後在活動您檢索的說法是這樣的:

String passedArg = getIntent().getExtras().getString("argument"); 
enteredValue.setText(passedArg); 
相關問題