首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListActivity - onListItemClick

ListActivity - onListItemClick
EN

Stack Overflow用户
提问于 2013-10-04 13:22:57
回答 3查看 380关注 0票数 0

由于某种原因,我的onListItemClick(查看listView,视图视图,int位置,长id){}在某些条件下不会触发。我的应用程序是这样的。ListActivity触发另一个活动,有时用户或其他条件可能导致该活动以结果结束。第一次触发ListActivity时,意味着调用onCreate方法,那么onListemClick()总是工作的。用户第一次返回到相同的活动时,情况也是一样的,然后onListItemClick总是工作的。当用户第二次返回ListActivity时,就会出现这个问题,那么onListItemClick根本就不会触发,就像根本没有连接到视图的侦听器一样。

我做了两次检查是否设置了一个listAdapter。这是标准的ArrayAdapter。所有其他侦听器都是功能性的,因此我怀疑ListActivity由于某些原因没有被用作侦听器,但我不知道为什么。这是完全相同的代码,两次运行的值完全相同,但由于某种原因,侦听器似乎是空的。代码是在调用onResume (Int)之后从行中的setContentView方法执行的。有人知道为什么会这样吗?

下面的代码启动布局,那里没有问题,一切都是按照预期进行的。

代码语言:javascript
复制
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之后工作,并且用户第一次导航回当前活动。

代码语言:javascript
复制
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);
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-10 07:49:07

我从来不知道这是怎么回事。我想出的解决方案不是使用继承,而是手动实现OnItemClickListener。现在每次都起作用了。

票数 0
EN

Stack Overflow用户

发布于 2013-10-04 13:29:02

在oncreate中进行初始化工作,并在oncreate()方法中设置适配器。您可能没有在OnResume()方法中设置侦听器。或者在恢复方法中设置侦听器等于null。

票数 0
EN

Stack Overflow用户

发布于 2013-10-04 13:32:12

重新初始化您的列表或侦听器在Onresume()方法!您的解决方案只存在于onResume()方法中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19182333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档