Android: почему я не могу увидеть ListView, если в одной и той же деятельности более одного ListView? - PullRequest
0 голосов
/ 16 декабря 2011

В моей активности более одного ListView. Смотрите XML-макет этого:

<RelativeLayout  
    android:id="@+id/taxCodeLayout"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:orientation="vertical" android:visibility="gone">
    <EditText 
        android:layout_height="wrap_content" 
        android:layout_width="fill_parent" 
        android:singleLine="true" 
        android:id="@+id/taxcode_EditText" 
        android:gravity="center"
        android:textColor="#000000" 
        android:textSize="14sp" 
        android:cursorVisible="false"
        android:focusable="false"
        android:hint="tax code"/>
    <ListView 
        android:id="@+id/android:list" 
        android:cacheColorHint="#00000000"
        android:layout_centerInParent="true"
        android:layout_centerHorizontal="true"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:layout_below="@+id/taxcode_EditText"/>
</RelativeLayout>

<!-- ============================================================== -->
<!-- PAYE Frequency Layout start-->
<!-- ============================================================== -->
<RelativeLayout  
    android:id="@+id/payeFrequencyLayout"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:orientation="vertical" 
    android:visibility="gone">
    <EditText 
        android:layout_height="wrap_content" 
        android:layout_width="fill_parent" 
        android:singleLine="true" 
        android:id="@+id/payFrequencyEditText" 
        android:gravity="center"
        android:textColor="#000000" 
        android:textSize="14sp" 
        android:cursorVisible="false"
        android:focusable="false"
        android:hint="pay frequency" 
        android:layout_weight="1"/>
    <ListView 
        android:id="@+id/android:list" 
        android:cacheColorHint="#00000000"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:layout_weight="1" 
        android:layout_below="@+id/payFrequencyEditText"/>
</RelativeLayout>

Теперь я могу получить доступ к первому ListView с этим кодом:

setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, TAXCODE));  
getListView().setTextFilterEnabled(true);
taxCode_EditText.setText(TAXCODE[0]);
//taxCodeFinalValue = taxCode_EditText.getText().toString();
lv1 = getListView();
lv1.setOnItemClickListener(new OnItemClickListener()
{
    public void onItemClick(AdapterView<?> parent, View view,final int Position,long id)
    {
        taxCode_EditText.setText(TAXCODE[Position].toString());
        //prefsEditor.commit(); 
    }
});

Но теперь, если я получаю доступ ко второму ListView с приведенным ниже кодом, он не работает. Я не могу видеть любой второй ListView.

Так что не так в моем коде? Почему я не могу увидеть Второй LiStView? Спасибо.

Отредактировано:

После ответа я установил второй просмотр списка, как показано ниже, но все еще не получил никакого просмотра списка. код:

ListView payFrequencyListView = (ListView) findViewById(R.id.payFrequencyListView);
        payFrequencyListView = getListView();
        payFrequencyListView.setTextFilterEnabled(true);
        Adapter mySecondAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_2, PAY_FREQUENCY);  
        payFrequencyEditText.setText(PAY_FREQUENCY[0]);
        payFrequencyListView.setAdapter((ListAdapter) mySecondAdapter);

        payFrequencyListView.setOnItemClickListener(new OnItemClickListener()
        {
            public void onItemClick(AdapterView<?> parent, View view,final int Position,long id)
            {
                payFrequencyEditText.setText(PAY_FREQUENCY[Position].toString());
                //prefsEditor.commit(); 
            }
        });

Ответы [ 6 ]

2 голосов
/ 16 декабря 2011

У вас есть android:visibility="gone" для трех RelativeLayouts. Убедитесь, что вы делаете их видимыми, например:

findViewById(R.id.dateSelectionLayout).setVisible(View.VISIBLE);

, чтобы контролировать, какой из них виден каждый раз, или просто удалите android:visibility="gone", чтобы сделать их видимыми одновременно.

2 голосов
/ 16 декабря 2011

add layout_weight свойство для макетов, иначе только в представлении списка будет занимать экран.,

1 голос
/ 16 декабря 2011

setListAdapter() и getListView() в ListViewActivity будут работать только со списком THE , имеющим "@id/android:list" в качестве идентификатора.

Если вы хотите управлять 2 списками, вам нужно будет установить второй идентификатор для второго и получите его, используя старый добрый findViewById(), приведите его к ListView, а затем установите для него свой адаптер, используя setAdapter().

Компоновка:

<ListView 
        android:id="@+id/my_second_list_id" 
        android:cacheColorHint="#00000000"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:layout_weight="1" 
        android:layout_below="@+id/payFrequencyEditText"/>

ListViewActivity:

Adapter mySecondAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_2, TAXCODE)); 
ListView mySecondListview = (ListView)findViewById(R.id.my_second_list_id);
mySecondListview.setAdapter(mySecondAdapter);
1 голос
/ 16 декабря 2011

Используйте android:visibility="visible" или

Удалить всю строку, это будет работать

1 голос
/ 16 декабря 2011

// удалите эту строку из вашего Relativelayout и убедитесь, что ваш список отображается в вашем графическом макете

 android:orientation="vertical"
 android:visibility="gone

ваш идентификатор для editText android:id="@+id/taxcode_EditText"

, затем используйте

android: layout_below = "@ id / taxcode_EditText"

не используйте + для справки.если это не ниже вашей декларации.

0 голосов
/ 16 декабря 2011

Сделать андроид андроид: видимость = "ушел" для трех RelativeLayouts.

Затем в каждом списке просмотра я видел android: layout_height = "wrap_content", вместо того, чтобы использовать любую конкретную высоту android: layout_height = "330",

потому что в представлении списка по умолчанию предоставляется прокручиваемое представление, если содержимое представления списка выходит за пределы высоты. Затем поместите весь макет в прокручиваемый вид.

...