【问题标题】: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_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(); 
            }
        });

【问题讨论】:

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

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


【解决方案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_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);
    

    【讨论】:

    • 我想我已经接近解决方案了。但仍然没有得到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_height="wrap_content" 而不是使用任何特定高度 android:layout_height="330" ,

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-01
        • 2012-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-24
        • 1970-01-01
        • 2014-09-04
        相关资源
        最近更新 更多