ListActivity - onListItemClick

时间:2013-10-04 13:22:57

标签: android listactivity onresume onactivityresult

出于某种原因,我的onListItemClick(查看listView,View视图,int position,long id){}在某些情况下不会触发。我的申请流程如下。 ListActivity触发另一个活动,有时用户或其他条件可能导致该活动以结果结束。第一次触发ListActivity时,意味着调用onCreate方法,然后onListemClick()始终有效。用户第一次返回同一活动的情况也是如此,然后onListItemClick始终有效。问题出现在第二次用户返回ListActivity时,onListItemClick根本不会触发,就像根本没有连接到视图的侦听器一样。

我仔细检查了是否设置了listAdapter。它是标准的ArrayAdapter。所有其他的听众都是功能性的,所以我的怀疑围绕着由于某种原因ListActivity不被用作监听器,但我无法理解为什么。它是完全相同的代码,具有完全相同的值运行两次,但似乎听者因某些原因而无效。在调用setContentView(int id)之后,代码从onResume方法执行。有谁知道为什么会这样?

以下代码启动布局,没有问题,一切都按预期进行。

private void initLayout(){

    projectsToList(user.getProjects());

    ttvEmailField = (TextView) findViewById(R.id.ttv_email);
    ttvNameField = (TextView) findViewById(R.id.ttv_username);

    String email = user.getEMail();
    String name = user.getName();

    if(email != null && email.length() > 0){
        ttvEmailField.setText(user.getEMail());
    }

    if(name != null && email.length() > 0){
        ttvNameField.setText(user.getName());
    }

    btnLogout = (Button) findViewById(R.id.btn_logout);

    btnLogout.setOnClickListener(this);

}

下面的代码设置了ArrayAdapter,onListItem只能在onCreate之后工作,并且第一次用户导航回currentactivity。

private void projectsToList(List<ProjectPojo> projects){
    int max = projects.size();
    String[] arrProjects = new String[max];

    for(int i = 0; i < max; ++i){
        arrProjects[i] = projects.get(i).getName();
    }
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item_simpletext, R.id.ttv_listtextview, arrProjects);

    setListAdapter(adapter);
}

3 个答案:

答案 0 :(得分:0)

在oncreate中进行初始化工作,并在oncreate()方法中设置适配器。可能是你没有在OnResume()方法中设置监听器。或者你在resume方法上设置listener等于null。

答案 1 :(得分:0)

在Onresume()方法中重新初始化列表或监听器! 您的解决方案仅在于onResume()方法..

答案 2 :(得分:0)

我从来没有发现过这个是怎么回事。我提出的解决方案是不使用继承并手动实现OnItemClickListener。现在它每次都有效。