Android listview自定义适配器所需的静态方法
我有一个覆盖对象类(Guide)和一个子类(Session) Guide.getSessionsByTrack方法中唯一的问题是,当该方法是静态的时,不允许我使用this.sessions。会话列表必须是静态的,如果我想更新列表,这不是静态的吗Android listview自定义适配器所需的静态方法,android,listadapter,baseadapter,Android,Listadapter,Baseadapter,我有一个覆盖对象类(Guide)和一个子类(Session) Guide.getSessionsByTrack方法中唯一的问题是,当该方法是静态的时,不允许我使用this.sessions。会话列表必须是静态的,如果我想更新列表,这不是静态的吗 这个小小的打嗝是唯一让我无法实现目标的东西,任何帮助都将不胜感激。你有两个问题 首先做这样的事情 Guide.getSessionsByTrack(...); …表示您正试图通过方法的父类名而不是通过Guide对象的引用(和实例化)实例来引用方法。在这
这个小小的打嗝是唯一让我无法实现目标的东西,任何帮助都将不胜感激。你有两个问题 首先做这样的事情
Guide.getSessionsByTrack(...);
…表示您正试图通过方法的父类名而不是通过Guide
对象的引用(和实例化)实例来引用方法。在这种情况下,是的,该方法必须声明为static
,因为您没有显式地实例化Guide
类的实例
第二个问题是getSessionsByTrack(…)
实际上不是属于Guide
类本身的方法,而是属于private
内部类(Session
)。基本上,这种方法是无论如何都无法实现的
你需要修复这两个,然后它才能工作。在Guide
类中创建一个public static
方法,该方法本身调用会话
类中的static
方法,或者创建Guide
的实例,并提供一个类似的get
方法,该方法可以公开访问
另外,您似乎对
static
有误解,因为您认为这意味着事物无法更新。这将是final
(换句话说是“常量”)static
的用法有不同的含义。我建议你仔细阅读Javafinal
和static
的用法。啊,这把一切都搞定了!这是学习Java的过山车。
public class SessionListAdapter extends BaseAdapter {
private ArrayList<Session> sessions;
//private Session[] sl;
private LayoutInflater mInflater;
public SessionListAdapter(Context context, ArrayList<Session> sl) {
sessions = sl;
mInflater = LayoutInflater.from(context);
}
public int getCount() {
return sessions.size();
}
public Object getItem(int position) {
return sessions.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.session_two_line_list, null);
holder = new ViewHolder();
holder.title = (TextView) convertView.findViewById(R.id.session_title);
holder.time = (TextView) convertView.findViewById(R.id.session_time);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.title.setText(sessions.get(position).getTitle());
holder.time.setText(sessions.get(position).getTimeSpan());
return convertView;
}
static class ViewHolder {
TextView title;
TextView time;
}
}
...
this.lv1 = (ListView) view.findViewById(R.id.SessionListView);
// get sessions
this.sessionList = Guide.getSessionsByTrack(0); // errors here and complains that this method must be static
final SessionListAdapter lv1adapter = new SessionListAdapter(this, this.sessionList);
lv1.setAdapter(lv1adapter);
...
Guide.getSessionsByTrack(...);