我有一个自定义适配器,为列表视图提供自定义视图(一些字段和一个图像)。我改变了一些东西,由于某种原因,我的clickListener方法parent.getItemAtPosition(position)总是返回null。不确定我所做的改变是如何产生这种效果的。单步执行时,它会正确触发,但由于某种原因,该值始终为null。你能看到什么吗?
ListView airportResults = (ListView) findViewById( R.id.listAirportResults );
List<SearchResultsItem> items = getSearchResults(searchTerm);
ResultsAdapter = new SearchResultsAdapter(this, items);
airportResults.setAdapter(ResultsAdapter);
我的getSearchResults(searchTerm)返回listview中具有以下类型的项目:
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;我点击第4项,位置= 3等)。父对象和视图对象都具有值。但是, sClickedItem 始终为空。
非常感谢, Ĵ
答案 0 :(得分: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();
因为我没有使用标准对象,所以我必须自己实现。简单地说:我的观点是一个包含各种文本视图的cutom XML布局,所以我只需要 view.findViewById()(因为视图是当前选中的项目listview)和 getText()代替。
感谢您让我意识到这一点
Ĵ