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?的主要内容,如果未能解决你的问题,请参考以下文章