Android:为什么如果在同一个活动中有多个ListView,我无法看到ListView?

时间:2011-12-16 11:30:20

标签: android listview android-layout android-widget android-listview

在我的活动中,有多个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,它就无法正常工作。我无法看到任何Second 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 个答案:

答案 0 :(得分:2)

为布局添加 layout_weight 属性,否则只会在列表视图中占据屏幕。

答案 1 :(得分:2)

你有三个RelativeLayouts android:visibility="gone"。确保你看到它们,如下所示:

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

控制哪一个在每次都可见,或者只是移除android:visibility="gone"以使它们一次全部可见。

答案 2 :(得分:1)

//从Relativelayout中删除此行并检查列表是否以图形布局显示

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

您对editText的ID为android:id="@+id/taxcode_EditText"

然后用作

机器人:layout_below = “@ ID / taxcode_EditText”

请勿使用+作为参考。如果它不低于你的声明。

答案 3 :(得分:1)

使用android:visibility="visible"

删除它将起作用的整行

答案 4 :(得分:1)

setListAdapter()中的

getListView()ListViewActivity仅适用于以“@id/android:list”作为ID的 THE 列表。

如果您想管理2个列表视图,则需要为第二个列表视图设置另一个ID 使用优秀的旧版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);

答案 5 :(得分:0)

为三个RelativeLayouts设置android android:visibility =“gone”。

然后在每个listview中我看到android:layout_height =“wrap_content”而不是使用任何特定高度的android:layout_height =“330”,

因为在默认列表视图中,如果列表视图的内容超出高度,则提供可滚动视图。然后将整个布局放在可滚动视图下。