2013-05-17 3 views
2

Мое приложение - это список фирм, каждая фирма - это строка в моем списке, которая показывает: изображение, имя и телефон (по адаптеру). Все работает! Но когда я нажимаю элемент своего списка, он должен начинать another activity, где отображается страница с подробной информацией. У меня возникли проблемы с onitemclick listener (она не работает): деятельностьAndroid ListView проблема с OnItemClick Listener

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

извините, им очень нуб на этом .. мой «лев .setOnItemClickListener (новый .... ". в в моей основной деятельности (не в адаптере) мой адаптер: общественного класса customListViewAdapter расширяет BaseAdapter реализует SectionIndexer { я должен поставить„this.mSavedContext = контекст;“здесь ? – user2395406

0

I была очень похожая проблема. Решено, установив на прослушиватель кликов, чтобы просмотреть его в списке.

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; 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^