尝试使用baseadapter在运行时创建视图

时间:2012-08-21 17:33:40

标签: android runtime-error baseadapter

我使用baseadapter创建自己的listview适配器,我想在运行时动态创建视图而不使用inflater。当我这样做不使用baseadapter它工作正常但不是当我把代码放在baseadapter中时。

public View getView(int position, View convertView, ViewGroup parent) {

        int type = getItemViewType(position);
        System.out.println("getView " + position + " " + convertView + " type = " + type);
        if (convertView == null) {

            switch (type) {
                case TYPE_ITEM:
                    //convertView = mInflater.inflate(R.layout.item1, null);
                    LinearLayout ll = new LinearLayout(MainActivity.this);
                    TextView question = new TextView(MainActivity.this);
                    question.setTextSize(1,14);
                    question.setText("This is question");

                    ll = new LinearLayout(MainActivity.this);
                            ll.setOrientation(android.widget.LinearLayout.VERTICAL);
                    ll.addView(question); 
                    convertView=ll;
                    break;
                case TYPE_SEPARATOR:
                    convertView = mInflater.inflate(R.layout.item2, null);
                    break;
            }
        } else {
        }
        return convertView;
    }

1 个答案:

答案 0 :(得分:1)

首先检查convertView是否为null,然后如果type为TYPE_ITEM则返回null - 您至少必须返回ll。

顺便说一下:如果它不是null,你应该尝试回收convertView的性能原因。有关ListAdapters

的更多信息,请参阅http://www.vogella.com/articles/AndroidListView/article.html