0

我有一个自定义适配器,为列表视图(几个字段和一个图像)提供自定义视图。我改变了一些东西,由于某种原因,我的 clickListener 方法 parent.getItemAtPosition(position) 总是返回 null。不确定我所做的更改是如何产生这种效果的。单步执行时,它会正确触发,但由于某种原因,该值始终为空。你有什么可以看到的吗?

ListView airportResults = (ListView) findViewById( R.id.listAirportResults );
List<SearchResultsItem> items = getSearchResults(searchTerm);
ResultsAdapter = new SearchResultsAdapter(this, items);
airportResults.setAdapter(ResultsAdapter);

我的 getSearchResults(searchTerm) 返回列表视图中具有以下类型的项目:

List<SearchResultsItem>

然后是 onclick 监听器:

airportResults.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long duration) {
            String sClickedItem = (String) parent.getItemAtPosition(position);

           //do something with sClickedItem
        }
    });

从上面的代码来看,位置参数是正确的(我点击第一项,位置=0;我点击第四项,位置=3,等等)。父对象和视图对象都有值。但是,sClickedItem始终为空。

非常感谢,J

4

1 回答 1

1

解决了。这是我的自定义适配器的实现。

    airportResults.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long duration) {
            TextView textViewIata = (TextView) view.findViewById(R.id.list_searchresults_iata);
            String clickedIataValue = (String) textViewIata.getText();

因为我没有使用标准对象,所以我必须自己实现。简单地说:我的视图是一个带有各种文本视图的 cutsom XML 布局,所以我只需要view.findViewById()(因为视图是列表视图中当前选定的项目)和getText()那样的方式。

谢谢你让我意识到这一点

Ĵ

于 2013-11-12T11:36:08.447 回答