ListView
我的自定义适配器有一些问题,当单击一个项目时会获得错误的位置。
基本上,当单击该项目时,适配器中的项目名称会发送到不同的活动,并且在滚动之前可以正常工作。但是,仅在滚动时显示的任何项目都不会发送正确的位置;似乎他们在滚动之前发送了视图中项目的相应位置(这对视图回收有意义)。
这ListView
可能不会有很多项目,所以如果可以禁用视图回收它不应该是一个大问题,但我宁愿解决这个问题,以便我可以滚动并发送正确的位置。
我是一个非常新的 android 开发人员,这是我制作的第一个应用程序,所以我从在线教程中获得了这个自定义适配器,如果它看起来有点奇怪,请道歉。
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
Log.v("ConvertView", String.valueOf(position));
if (convertView == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.country_info, null);
holder = new ViewHolder();
holder.item = ((TextView)convertView.findViewById(R.id.infoBox));
convertView.setTag(holder);
holder.item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Country country = countryList.get(position);
String s = (String)(country.getName());
Intent i = new Intent(SecondScreenActivity.this, ThirdScreenActivity.class);
i.putExtra("position", s);
startActivity(i);
}
});
} else {
holder = (ViewHolder) convertView.getTag();
}
Country country = countryList.get(position);
holder.item.setText(country.getName());
holder.favourite.setChecked(country.isSelected());
holder.favourite.setTag(country);
return convertView;
}
注意:此代码可能会丢失/这里和那里有几个额外的括号,因为此方法还会检查项目是否已选中/未选中复选框,并且我删除了该代码以更容易解决此问题。
感谢您的帮助!