无法解析方法“ getEvent()”

时间:2018-07-08 07:31:37

标签: java android

我正在为我的自定义列表视图制作一个适配器类。但是,当尝试从“事件”类检索时,提示“无法解析方法'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;
    }
}

2 个答案:

答案 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();