我有一个列表视图,我正在使用自定义适配器将数据填充到列表视图表单数据库中。它工作正常,但是当我单击列表项时,我想获取被单击的项的 ID,以将其传递给下一个活动以做一些事情。但是当我单击列表项时,我无法获取 ID。知道为什么会这样吗?
我的列表监听器:
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View view, int position,
long id) {
Intent intent = new Intent(MainActivity.this,
CountryActivity.class);
intent.putExtra("countryId", adapter.getItem(position).getId());//here i am getting error saying
//The method getId() is undefined for the type Object.
startActivity(intent);
}
});
但是我已经为类型规范定义了我的 countries.java (POJO)
public class Countries {
Integer id;
String countryName = "", countryIcon = "";
public Countries(Integer id, String countryName, String countryIcon) {
this.id = id;
this.countryName = countryName;
this.countryIcon = countryIcon;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCountryName() {
return countryName;
}
public void setCountryName(String countryName) {
this.countryName = countryName;
}
public String getCountryIcon() {
return countryIcon;
}
public void setCountryIcon(String countryIcon) {
this.countryIcon = countryIcon;
}
}
我正在从以下代码中从游标 obj(签证)中获取数据:
names = new ArrayList<Countries>();
do {
country = new Countries(Integer.parseInt(visas.getString(0)),
visas.getString(1), visas.getString(2));
// Log.d("VISA", visas.getString(0));
names.add(country);
} while (visas.moveToNext());
这是我的适配器代码:
public class VisaAdapter extends ArrayAdapter<Countries> {
private final Context context;
private final ArrayList<Countries> values;
Resources resc = getContext().getResources();
public VisaAdapter(Context context, ArrayList<Countries> values) {
super(context, R.layout.list_item, values);
this.context = context;
this.values = values;
}
@Override
public Countries getItem(int position) {
return values.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.list_item, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.label);
ImageView imageView = (ImageView) rowView.findViewById(R.id.logo);
textView.setText(values.get(position).getCountryName());
// Change icon based on name
String icon = values.get(position).getCountryIcon();
int resIcon = resc.getIdentifier(icon, "drawable", "com.m7.visaapp");
rowView.setBackgroundResource(R.drawable.list_view_places_row);
imageView.setImageResource(resIcon);
return rowView;
}
}