2013-05-17 83 views
2

我的應用程序是一個公司名單,每個公司是在我的列表視圖中的一行,顯示:圖片,名稱和電話(通過適配器)。一切都在工作!但是當我點擊我的列表視圖的一個項目時,它應該開始another activity,顯示包含詳細信息的頁面。我遇到麻煩onitemclick listener(它不工作):Android ListView麻煩OnItemClick監聽器

empresa = firm (in portuguese) lv = my listview 
    lv.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 
     Intent i = new Intent (getApplicationContext(), detalheEmpresas.class); 
     Empresas empresa = (Empresas) parent.getItemAtPosition(position); 
     i.putExtra("Nome", empresa.getTitle().toString()); 
     startActivity(i); }}); 

我detalheEmpresas活動

public class detalheEmpresas extends Activity { 

@Override 
public void onCreate (Bundle savedInstanceState){ 

super.onCreate(savedInstanceState); 
this.setContentView(R.layout.detalhes_empresa); 
Intent i = getIntent(); 
String nome = i.getStringExtra("Nome"); 
TextView NOME = (TextView) findViewById(R.id.Nome); 
NOME.setText(nome); 
}} 

回答

0

很可能是相關getApplicationContext ... 嘗試使用活動情境:

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

    Intent i = new Intent (mSavedContext.getActivity(), detalheEmpresas.class); <------------- 

    Empresas empresa = (Empresas) parent.getItemAtPosition(position); 
    i.putExtra("Nome", empresa.getTitle().toString()); 
    startActivity(i); 
}}); 

----------新的編輯-----------------

確定如何對你只需添加一個單擊處理程序父活動,你應該是好去:

public class ParentActivity extends Activity implements OnItemClickListener { 
    your activity code... 

    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 

     Intent i = new Intent (getActivity(), detalheEmpresas.class); 
     Empresas empresa = (Empresas) parent.getItemAtPosition(position); 
     i.putExtra("Nome", empresa.getTitle().toString()); 
     startActivity(i); 
    } 
您的活動代碼

更換

lv.setOnItemClickListener(new OnItemClickListener() { 

lv.setOnItemClickListener(this); 
+0

getactivity()是未定義的類型新adapterview.OnItemClickListener =/ – user2395406

+0

,除非你在contstructor通過它,然後你可以使用它裏面:) –

+0

抱歉,即時通訊非常對這個小白..我的「LV .setOnItemClickListener(新的......「。在我的主要活動(而不是在適配器) 我的適配器: 公共類customListViewAdapter延伸BaseAdapter實現SectionIndexer { 我應該把‘this.mSavedContext =上下文;’在這裏? – user2395406

0

我有一個非常類似的問題。通過設置點擊監聽器在列表適配器中查看自身來解決。

public class EmpresasListAdapter extends ArrayAdapter<Empresas> { 

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

     //recycling view and setting view fields. 

     /* Set listener to open firm detail activity on click */ 
     view.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // Your code to open firm detail activity 
       Intent i = new Intent (getApplicationContext(), detalheEmpresas.class); 
       Empresas empresa = (Empresas) parent.getItemAtPosition(position); 
       i.putExtra("Nome", empresa.getTitle().toString()); 
       startActivity(i); 
      } 
     }); 
     return view; 
    } 
}