2014-01-21 44 views
0

我在我的活動中有一個列表視圖。我想在第二項活動中點擊它時顯示它的數據。但是不能這樣做。幫幫我。這是代碼。該怎麼做才能讓我的數據從listview中獲取並顯示在下一個活動中?想要在我的列表視圖中訪問其他活動的數據

ListActivity.java

package com.example.task; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 

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

public class ListActivity extends Activity implements OnItemClickListener{ 

    ListView list1; 

    LoginDataBaseAdapter loginDataBaseAdapter; 
ArrayList<HashMap<String, String>> datalist; 

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

    loginDataBaseAdapter=new LoginDataBaseAdapter(this); 
    loginDataBaseAdapter=loginDataBaseAdapter.open(); 

    list1=(ListView)findViewById(R.id.list); 

    datalist=loginDataBaseAdapter.getAllAnimals(); 
    ArrayAdapter<HashMap<String, String>> adapter=new   ArrayAdapter<HashMap<String,String>>(getApplicationContext(), android.R.layout.simple_dropdown_item_1line,datalist); 
     list1.setAdapter(adapter); 
     list1.setOnItemClickListener(this); 
    } 

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

@Override 
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
    // TODO Auto-generated method stub 

} 

}

+0

通行證列表項選擇經由意圖上覆蓋 數據public void on ItemClick(AdapterView arg0,View arg1,int arg2,long arg3)// TODO自動生成方法存根 } –

+0

您應該使用本地接收器,並將更新廣播到其他活動。您也可以直接從DB –

回答

0
String yourdata; 
@Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) { 

      yourdata= list1.getItemAtPosition(arg2).toString(); 
      // pass this data to your second activity 

     } 
0

我認爲你正在努力實現這樣的..

String DATA; 
@Override 
public void onItemClick(AdapterView<?> arg0, View view, int pos, 
      long arg3) { 
    DATA= YOUR_LIST.getItemAtPosition(pos).toString(); 
    Intent intent = new Intent(getApplicationContext(),SECOND_ACTIVITY.class); 
    intent.putExtra("DATA",DATA); 
    startActivity(intent); 
} 

希望它會幫助你.. !!

+0

填充其他活動的Listview我試過了。但現在我的應用程序正在自行關閉。當我檢查logcat時,它顯示錯誤,我將值賦給textview。 –

0

MainActivity

String data; 
    @Override 
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
     // TODO Auto-generated method stub 

    data = adapter.getItem(position); 
    Intent intent = new Intnet(MainActivity.this, NextActivity.class); 
    i.putExtra("data", data); 
    startActivity(intent); 
    } 

上打開NextActivity

Intent intent = getIntent(); 
     String passData= intent.getExtras().getString("data"); 
+0

@ A.Wie-在我的eclipse中沒有任何getItem()。 –

+0

對不起,用'adapter'更改'list1',然後再試一次。此代碼適用於我 –

1

你的數據,你可以簡單的使用:

@Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
      long arg3) { 

     String mydata= datalist.get(arg2).toString(); 
     // pass this data to your second activity 
     Intent n = new Intent(YourActivityName.this ,SecondActivity.class); 
     n.putExtra("key", mydata); 
     startActivity(intent); 
    } 

現在恢復在onCreate()方法你SecondActivity:

Intent n= getIntent(); 
String data = intent.getStringExtras("key"); 
0

除了通過意圖傳遞數據,您還可以使用全局變量。

您可以查看示例here

您可以將全局變量/ s設置爲選擇列表項目(使用onItemClick列表器)時適用的值,然後在其他活動中對其進行訪問。

例如:

CLASS MyApp的

class MyApp extends Application 
{ public String whatever;} 

CODE:ACTIVITY 1

@Override 
public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
    // TODO Auto-generated method stub 

MyApp as = ((MyApp)getApplicationContext()); 
as.whatever = position + "Clicked"; 
} 

CODE:活動2

class Blah extends Activity 
{ 

    @Override 
    public void onCreate(Bundle b){ 
    ... 
    MyApp as = ((MyApp)getApplicationContext());  
    Log.d(as.whatever); 
    ...} 

} 
+0

一般來說,出於各種原因使用全局變量是不鼓勵的。但從技術上講,這確實起作用。 –

相關問題