2013-05-17 60 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; 
    } 
}