我正在为我的自定义列表视图制作一个适配器类。但是,当尝试从“事件”类检索时,提示“无法解析方法'getEvent()'”。如何解决此问题?它涉及我尝试检索的3种方法。 getEvent,getDate和getTime。 这是我的适配器类:
public class EventsListAdapter extends ArrayAdapter<Events> {
private Context mContext;
int mResource;
public EventsListAdapter(@NonNull Context context,@LayoutRes int resource, @NonNull ArrayList<Events> objects) {
super(context, resource, objects);
mContext = context;
mResource = resource;
}
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
String event = getItemId(position).getEvent();
String date = getItemId(position).getDate();
String time = getItemId(position).getTime();
Events events = new Events(event,date,time);
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(mResource, parent, false);
TextView tvEvent = (TextView)convertView.findViewById(R.id.textView11);
TextView tvDate = (TextView)convertView.findViewById(R.id.textView21);
TextView tvTime = (TextView)convertView.findViewById(R.id.textview31);
tvEvent.setText(event);
tvDate.setText(date);
tvTime.setText(time);
return convertView;
}
}
这是我的活动课:
public class Events {
private String event;
private String date;
private String time;
public Events(String event, String date, String time){
this.event = event;
this.date = date;
this.time = time;
}
public String getEvent() {
return event;
}
public void setEvent(String event) {
this.event = event;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
}
答案 0 :(得分:2)
问题出在您的getView
方法中:
String event = getItemId(position).getEvent();
String date = getItemId(position).getDate();
String time = getItemId(position).getTime();
作为文档,getItemId
返回一个long
:
长getItemId(int位置)
获取与列表中指定位置关联的行ID。
这就是您收到错误的原因:您无法在getEvent
上调用long
。
您可能正在寻找方法getItem
,该方法通过为其提供要获取的元素的位置来返回T
(在您的情况下为Events
)。
T getItem(int position)
获取与数据集中指定位置关联的数据项。
https://developer.android.com/reference/android/widget/ArrayAdapter
答案 1 :(得分:0)
可能是因为它正在返回一个通用对象,因此需要将其强制转换为您的类。
尝试
String event = ((Events)getItemId(position)).getEvent();