listView的适配器Adapter不响应解决思路
listView的适配器Adapter不响应
我设置的ListView控件来获取网络上的信息,都已经能够获得准确数据,但是,list的适配器不响应啊,为什么?
把最后一段输出的测试代码放在适配器的构造函数中,可以执行,但是,就是不执行public int getCount(),没有输出测试的信息 ,那后边的getView更不可能执行了啊!
各位,请问是什么可能的原因导致了这个适配器的无效呢?
------解决方案--------------------
weatherList是哪里的,全局变量吗。为什么getItem要return一个null,我擦,这代码写的非常有高度啊。一般人真看不懂。
------解决方案--------------------
public int getCount() {}//获取项目的条数
public Object getItem(int arg0) {}//获取每条项目的项目
public long getItemId(int arg0) {}//获取每条项目的ID
这三个方法都是在进行页面初始化的时候有系统调用,你没什么都没写,系统怎么按你的要求生成相应的视图!另外你的weatherList应该是全局变量!好好看看网上关于上面三个方法的讲解!
------解决方案--------------------
listView.setAdapter(new ListViewAdapter(this));
可以试试把this补全了 前面加上类名
- Java code
ListView listView = (ListView) findViewById(R.id.listview); Log.d("LC", "解析成功"); listView.setAdapter(new ListViewAdapter(this)); Log.d("LC", "解析成功2"); private class ListViewAdapter extends BaseAdapter { private LayoutInflater mInflater; private Context mContext; public ListViewAdapter(Context ctx) { this.mContext = ctx; this.mInflater = LayoutInflater.from(ctx); Log.d("LC", "进入"); } @Override public int getCount() { // TODO Auto-generated method stub Log.d("LC", "进入2"); return weatherList.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return arg0; } @Override public View getView(int position, View convertView, ViewGroup arg2) { Log.d("LC", "进入3"); ListViewHolder viewHolder; if(convertView == null) { convertView = mInflater.inflate(R.layout.listitem, null); viewHolder = new ListViewHolder(); viewHolder.imageViewIcon = (ImageView)convertView.findViewById(R.id.image_item); viewHolder.day = (TextView)convertView.findViewById(R.id.text_item_1); viewHolder.temp = (TextView)convertView.findViewById(R.id.text_item_2); viewHolder.condition = (TextView)convertView.findViewById(R.id.text_item_3); convertView.setTag(viewHolder); // viewHolder.btnDownLoad.setTag(viewHolder); }else { viewHolder = (ListViewHolder)convertView.getTag(); } for(Weather weather : weatherList){ Log.d("LC", "weatherList:"+weather.getDay()); Log.d("LC", "weatherList:"+weather.getHighTemp()); Log.d("LC", "weatherList:"+weather.getLowTemp()); Log.d("LC", "weatherList:"+weather.getCondition()); Log.d("LC", "下一天"); } return convertView; }
我设置的ListView控件来获取网络上的信息,都已经能够获得准确数据,但是,list的适配器不响应啊,为什么?
把最后一段输出的测试代码放在适配器的构造函数中,可以执行,但是,就是不执行public int getCount(),没有输出测试的信息 ,那后边的getView更不可能执行了啊!
各位,请问是什么可能的原因导致了这个适配器的无效呢?
------解决方案--------------------
weatherList是哪里的,全局变量吗。为什么getItem要return一个null,我擦,这代码写的非常有高度啊。一般人真看不懂。
------解决方案--------------------
public int getCount() {}//获取项目的条数
public Object getItem(int arg0) {}//获取每条项目的项目
public long getItemId(int arg0) {}//获取每条项目的ID
这三个方法都是在进行页面初始化的时候有系统调用,你没什么都没写,系统怎么按你的要求生成相应的视图!另外你的weatherList应该是全局变量!好好看看网上关于上面三个方法的讲解!
------解决方案--------------------
listView.setAdapter(new ListViewAdapter(this));
可以试试把this补全了 前面加上类名