Android:如果同一活动中有多个 ListView,为啥我看不到 ListView?

Posted

技术标签:

【中文标题】Android:如果同一活动中有多个 ListView,为啥我看不到 ListView?【英文标题】:Android: why i am not able to see the ListView if there are more then one ListView in the same activity?Android:如果同一活动中有多个 ListView,为什么我看不到 ListView? 【发布时间】:2012-01-21 22:38:58 【问题描述】:

在我的活动中,有多个 ListView。 查看它的 XML 布局:

<RelativeLayout  
    android:id="@+id/taxCodeLayout"
    android:layout_ 
    android:layout_
    android:orientation="vertical" android:visibility="gone">
    <EditText 
        android:layout_ 
        android:layout_ 
        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_ 
        android:layout_
        android:layout_below="@+id/taxcode_EditText"/>
</RelativeLayout>

<!-- ============================================================== -->
<!-- PAYE Frequency Layout start-->
<!-- ============================================================== -->
<RelativeLayout  
    android:id="@+id/payeFrequencyLayout"  
    android:layout_ 
    android:layout_
    android:orientation="vertical" 
    android:visibility="gone">
    <EditText 
        android:layout_ 
        android:layout_ 
        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_ 
        android:layout_
        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(); 
            
        );

【问题讨论】:

请粘贴完整的xml代码。在这个不清楚你使用的主要布局是什么 为什么要主布局?因为不需要主布局。 对于像 LinearLayout/RelativeLayout 这样的结果然后它是如何给出输出的 忘记可见性,因为我将它管理到 java 代码中,它工作正常。我的问题是,是否可以在同一个活动中查看两个以上的列表视图?如果是,那怎么办?或者为什么我不能同时设置列表视图? 我也在考虑这个问题,是的,您可以在单个活动中显示多个列表视图 【参考方案1】:

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

【讨论】:

【参考方案2】:

三个RelativeLayouts 有android:visibility="gone"。确保让它们可见,如下所示:

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

控制每次可见哪一个,或者简单地删除android:visibility="gone" 以使它们一次都可见。

【讨论】:

谢谢。但我正在通过在 java 中进行编码来管理该视图。所以没有任何过错。 Java 代码还有其他内容吗? 删除所有 android:visibility="gone" 看看它的作用【参考方案3】: ListViewActivity 中的

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

如果您想管理 2 个列表视图,您需要将另一个 id 设置为第二个,然后 使用旧的findViewById() 检索它,将其转换为ListView,然后使用setAdapter() 将适配器设置为它。

布局:

<ListView 
        android:id="@+id/my_second_list_id" 
        android:cacheColorHint="#00000000"
        android:layout_ 
        android:layout_
        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);

【讨论】:

我想我已经接近解决方案了。但仍然没有得到listView。请更新问题。 谢谢伙计。我得到了解决方案。【参考方案4】:

使用android:visibility="visible"

删除整行就可以了

【讨论】:

【参考方案5】:

//从你的Relativelayout中删除这一行并检查你的列表是否显示在你的图形布局中

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

您的editText id 是android:id="@+id/taxcode_EditText"

然后用作

android:layout_below="@id/taxcode_EditText"

不要使用+ 作为参考。如果它不低于您的声明。

【讨论】:

忘记可见性,因为我已经通过 coading 设置了它。 您在图形布局中检查了吗? 当我将第一个相对布局设置为可见时,它在我的图形布局中显示良好。如果它没有按您的意思显示,请发送您的整个布局。 让我们考虑一下我已经在 xml 中显示了可见的。并设置数据抛出java代码我仍然无法得到它。 如果你能看到你的edittext,那么你的listView是空的,数据不加。设置一些最小高度和颜色,看看它的显示与否。【参考方案6】:

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

然后在每个列表视图中我看到 android:layout_ 而不是使用任何特定高度 android:layout_ ,

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

【讨论】:

以上是关于Android:如果同一活动中有多个 ListView,为啥我看不到 ListView?的主要内容,如果未能解决你的问题,请参考以下文章

android 一个listview中有多个布局切换

在同一会话中执行来自不同活动的多个请求

在android中停止几个媒体播放器

Android - 一个应用程序中有两个或多个 GCM 令牌

在同一个活动中更改/使用多个布局?

Android - 如何在一个活动中禁用多个微调器的特定项目