繁体   English   中英

ListActivity-onListItemClick

[英]ListActivity - onListItemClick

由于某些原因,我的onListItemClick(View listView,View 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);
}

在oncreate中进行初始化工作,并在oncreate()方法中设置适配器。 可能是您未在OnResume()方法中设置侦听器。 或者您在简历方法中将侦听器设置为null。

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

我从来没有发现这是怎么回事。 我想到的解决方案是不使用继承,而是手动实现OnItemClickListener。 现在,它每次都能工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM