ListViews с несколькими разметками объекта

У меня есть a ListView на моем ListActivity и я хотел бы строки ListView быть 1 из 3 различных разметок. Первый объект в моем списке всегда собирается использовать расположение A, второй объект в моем списке всегда собирается использовать расположение B, и все последующие объекты собираются использовать расположение C.

Вот моя функция getView:

@Override
public View getView(int position, View convertView, ViewGroup parent) { 
    // get the View for this list item
    View v = convertView;
    if (v == null) {
        LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        switch (position) {
            case 0:
                v = vi.inflate(R.layout.layout_A, parent, false);
                break;
            case 1:
                v = vi.inflate(R.layout.layout_B, parent, false);
                break;
            default:
                v = vi.inflate(R.layout.layout_C, parent, false);
                break;
        }
    }   
    switch (position) {
        case 0:
            TextView txtLabel1 = (TextView)findViewById(R.id.label1);
            TextView txtLabel2 = (TextView)findViewById(R.id.label2);
            if (txtLabel1 != null) {
                txtLabel1.setText("sdfasd");
            }
            if (txtLabel2 != null) {
                txtLabel2.setText("dasgfadsasd");
            }
            break;
        default:
            break;
    }
    // return the created view
    return v;
}

R.id.label1 и R.id.label2 TextViews на R.layout.layout_A. Однако txtLabel1 и txtLabel2 являются пустыми после попытки установить их. Почему?

Я ступил через этот код в отладчик, и он расширил корректное расположение (R.layout.layout_A) и попал в корректный случай ниже для установки R.id.label1 и R.id.label2 текст.

Кроме того, если существует лучший способ сделать это, сообщите мне.

13
задан Macarse 5 August 2010 в 15:41
поделиться