我正在编写一个应用程序,从RSS提要中获取信息,使用DOM解析器解析它(与客户端RSS提要有关),然后在ListView中显示已解析的对象。
出于某种原因,getView()
未被调用......
这是活动的代码:
public class NoPicList extends Activity {
ListView list;
NoPicAdapterV2 adapter2;
ProgressDialog mDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.no_pic_list);
list = (ListView) findViewById(R.id.noPicListView);
// get the request from the main activity
Bundle b = getIntent().getExtras();
String request = b.getString("REQUEST");
mDialog = new ProgressDialog(this);
mDialog.setCancelable(false);
mDialog.setMessage("Lodaing Data");
mDialog.show();
new GetNewsAndCalendar().execute(request);
}
@Override
protected void onPause() {
mDialog.dismiss();
super.onPause();
}
class GetNewsAndCalendar extends
AsyncTask<String, Void, ArrayList<Message>> {
@Override
protected ArrayList<Message> doInBackground(String... params) {
String url = params[0];
DOMFeedParser parser = new DOMFeedParser(url);
return parser.parse();
}
@Override
protected void onPostExecute(ArrayList<Message> result) {
adapter2 = new NoPicAdapterV2(NoPicList.this, R.layout.no_pic_list_item, result);
list.setAdapter(adapter2);
mDialog.dismiss();
}
}
}
这是适配器的代码:
public class NoPicAdapterV2 extends ArrayAdapter<NewAndCalendar> {
private ArrayList<Message> data;
private LayoutInflater inflator;
private Activity mActivity;
public NoPicAdapterV2(Context context, int textViewResourceId,
ArrayList<Message> result) {
super(context, textViewResourceId);
data = (ArrayList<Message>) result;
mActivity = (Activity) context;
inflator = (LayoutInflater) mActivity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (vi == null)
vi = inflator.inflate(R.layout.no_pic_list_item, parent, false);
TextView title = (TextView) vi.findViewById(R.id.noPicTitle);
TextView subtitle = (TextView) vi.findViewById(R.id.noPicSubtitle);
TextView id = (TextView) vi.findViewById(R.id.noPicID);
title.setText(data.get(position).getTitle().toString());
subtitle.setText(data.get(position).getDate().toString());
id.setText(data.get(position).getDescription());
return vi;
}
}
DOMFeedParser代码是根据IBM open source Java XML parser article构建的。
感谢一帮......
答案 0 :(得分:3)
你应该覆盖(在自定义适配器中)
getCount()
并返回data
的大小以便让adpater正常工作。或者您调用带有data
public ArrayAdapter (Context context, int textViewResourceId, T[] objects)
答案 1 :(得分:0)
您的ArrayAdapter不知道您的数组的内容,因此计数为0.
像这样:
public NoPicAdapterV2(Context context, int textViewResourceId,
ArrayList<Message> result) {
// Here
super(context, textViewResourceId, result);
data = (ArrayList<Message>) result;
mActivity = (Activity) context;
inflator = (LayoutInflater) mActivity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
答案 2 :(得分:0)
我希望下面的代码可以只为super(...)
添加一个参数public NoPicAdapterV2(Context context, int textViewResourceId,
ArrayList<Message> result) {
super(context, textViewResourceId,result);
data = (ArrayList<Message>) result;
mActivity = (Activity) context;
inflator = (LayoutInflater) mActivity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}