当前位置: 首页 > 面试题库 >

ListView在setOnItemClickListener上产生nullpointerexception

步嘉德
2023-03-14
问题内容

我正在尝试通过一些教程代码来工作,并添加一个OnItemClick侦听器,但是当它击中侦听器并导致我的应用崩溃时,总是引发异常。这是我在Android环境中进行的首次尝试,因此我正在尝试学习所有这些东西之间的相互关系。

这是我尝试过的:

import java.util.ArrayList;
import java.util.List;

import org.json.JSONObject;

import android.app.AlertDialog;
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;


public class RssActivity extends ListActivity{

private RssListAdapter adapter;

private OnItemClickListener newsSelectListener = new OnItemClickListener()
    {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            AlertDialog.Builder alert=new AlertDialog.Builder(RssActivity.this);
            alert.setTitle("Clicked").setMessage("Item clicked").setNeutralButton("OK", null).show();

        }
    };

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    List<JSONObject> jobs = new ArrayList<JSONObject>();
    try {
        jobs = RssReader.getLatestRssFeed();
    } catch (Exception e) {
        Log.e("RSS ERROR", "Error loading RSS Feed Stream >> " + e.getMessage() + " //" + e.toString());
    }

    adapter = new RssListAdapter(this,jobs);
    setListAdapter(adapter);

    ListView lv = (ListView)findViewById(R.id.list);
    lv.setOnItemClickListener(newsSelectListener);

    }
}

我也尝试将setListAdapter更改为lv.setListAdapter,但这似乎不是有效的声明。

我想念什么?


问题答案:

ListActivity不要求你指定一个布局通过setContentView()那就是如果你想显示 只有
一个列表,但如果添加了另一种观点,你的ListView应该包含的android:id属性设置为@android:id/list像下面这样的XML

<ListView
  android:id="@android:id/list"
  android:layout_width="match_parent"
  android:layout_height="wrap_content" >
</ListView>

尝试更改您的代码

ListView lv = (ListView)findViewById(R.id.list);

对此

ListView lv = getListView();
lv.setOnItemClickListener(newsSelectListener);


 类似资料:
  • 本文向大家介绍Android 中ListView setOnItemClickListener点击无效原因分析,包括了Android 中ListView setOnItemClickListener点击无效原因分析的使用技巧和注意事项,需要的朋友参考一下 前言 最近在做项目的过程中,在使用listview的时候遇到了设置item监听事件的时候在没有回调onItemClick 方法的问题。我的情况是

  • 问题是,如果用户想删除一个项目(长时间点击该项目),我的应用程序会打开删除确认消息和编辑确认。 有什么想法,当用户长时间单击列表项时,如何只打开delete(setOnItemLongClickListener)消息?

  • 我在工作线程中使用阻止firebase调用的机制来避免回调。 我正在使用一个工作线程(JobIntentService)进行一些初始化进程。JobIntentService在应用程序打开并且只运行一次时启动。下面是我的工作线程代码 我正在使用 错误日志 我只能得到这个日志,因为错误发生在生产中 为什么会发生这种情况? 如何避免? (回调会使代码变得丑陋和凌乱,为了使代码干净,我更喜欢任务。请稍候)

  • 我正在努力调试一个NextJS API,该API正在开发中(通过本地主机),但在生产中悄无声息地失败。 下面,两个没有返回,所以我怀疑调用没有正确执行,可能会及时? 我不知道该怎么纠正,很高兴按指示调试解决这个问题!

  • 我有一个主题中的多个事件,我试图在这些步骤中处理: 根据标题值过滤事件 应用反序列化程序 按键分组 聚合以生成新的KTable 新KTable将以流式传输方式传输到与具有新标题的新事件相同的主题 我可以使用transformValues访问标题,但不确定在执行toStream时如何注入新的标题值。 注意:我是KStream的新手。

  • 在生产集群上运行 Topology 类似于在 本地模式 下运行.以下是步骤: 1)定义 Topology (如果使用 Java 定义, 则使用 TopologyBuilder ) 2)使用 StormSubmitter 将 topology 提交到集群. StormSubmitter 以 topology 的名称, topology 的配置和 topology 本身作为输入.例如: Config