0

baseadapter を使用して独自のリストビュー アダプターを作成していますが、インフレータを使用せずに実行時にビューを動的に作成したいと考えています。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;
    }
4

1 に答える 1

1

最初に convertView が null かどうかを確認し、type が TYPE_ITEM の場合は null を返します。少なくとも ll を返す必要があります。

ところで: null でない場合は、パフォーマンス上の理由から convertView をリサイクルするようにしてください。ListAdapters の詳細については、 http: //www.vogella.com/articles/AndroidListView/article.htmlを参照してください。

于 2012-08-21T17:40:49.657 に答える