java - 自定义 ArrayAdapter 未被调用

标签 java android android-arrayadapter

我正在编写一个应用程序,它从 RSS feed 获取信息,使用 DOM 解析器解析它(客户端 RSS feed 的问题),然后在 ListView 中显示解析后的对象。

由于某种原因,getView() 没有被调用...

这是 Activity 的代码:

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 构建的.

非常感谢...

最佳答案

您应该覆盖(在您的自定义适配器中)

getCount()

并返回data的大小,以便让adpater工作。或者您调用接受 data

的 ArrayAdapter 构造函数
public ArrayAdapter (Context context, int textViewResourceId, T[] objects)

关于java - 自定义 ArrayAdapter 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10225741/

相关文章:

java - AudioInputStream.skip 具有负值

java - 可以在listview的setListAdapter或SimpleAdapter中显示对象值的Arraylist吗?

java - android: ArrayAdapter 在 AsyncTask 中只执行一次

javascript - 如何防止生成空的 Birt 报告

java - JProgressbar 未出现在框架中

android - 应该在方法结束时调用 Super

android - Google Play 不接受任何依赖华为的应用程序包

java - Android:简单线程示例崩溃

android - ListView 在创建第二个项目后显示项目

java - 如何在 Java 中创建一个没有重复项的简单随机数生成器,并将结果存储在数组中以打印给最终用户?