我想用滚动功能向用户显示我的数据库的一些内容。
所以我扩展了ListActivity,并使用了SimpleCursorAdapter。问题在于我无法看到价值取代。
private void fillData() {
// Get all of the rows from the database and create the item list
ListData = data.findAllDbValues();
startManagingCursor(ListData);
// Create an array to specify the fields we want to display in the list
String[] from = new String[]{Data.ID, Data.DESC};
// and an array of the fields we want to bind those fields to
int[] to = new int[]{R.id.text1, R.id.text2};
// Now create a simple cursor adapter and set it to display
ListAdapter la = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, ListData, from, to);//R.layout.showdata
setListAdapter(la);
}
如果我使用自定义布局(R.layout.showdata),它只有两个TextView,我可以看到值,但我必须触摸显示的文本来完成我的工作,而不是只触摸任何地方选择。
所以我想使用simple_list_item_2,所以我可以拥有这种能力。任何想法为什么我没有看到值或如何使我的自定义布局与simple_list产生相同的能力?
答案 0 :(得分:1)
这对我有用:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android_orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:paddingLeft="4dip"
android:paddingRight="5dp">
<TextView android:id="@+id/productRow"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
诀窍是将TextView
行包裹在LinearLayout
中。这让我可以单击列表元素上的任意位置来选择它。
答案 1 :(得分:0)
我知道这个问题已经过时了,但我是通过Google来到这里的,我觉得我有答案,因为我有类似的问题。
您在#include <iostream>
#include <list>
#include <algorithm>
#include <iterator>
#include <utility>
#include <cstdlib>
int main()
{
std::list< int > l{{1, 2, 3, 4}};
std::copy_n(std::cbegin(l), l.size(), std::ostream_iterator< int >(std::cout, " "));
std::cout << std::endl;
struct F
{
int state;
void operator () (int i) { state += i; }
} f{0};
using I = std::list< int >::const_iterator;
std::for_each< I, F && >(std::cbegin(l), std::cend(l), std::move(f));
std::cout << f.state << std::endl;
return EXIT_SUCCESS;
}
数组中引用自定义TextView
,而不是Android数组。你必须改为使用:
int[] to
只需检查XML中的ID和类中的ID是否相同。当您使用自定义视图时,您的类中的引用是
// and an array of the fields we want to bind those fields to
int[] to = new int[]{android.R.id.text1, android.R.id.text2};
以及您的布局R.id.text1
但是当您使用Android资源时,您班级中的引用为android:id="@+id:text1"
,并且布局为android.R.id.text1
。
您可以使用其中任何一种,但必须保持一致。
我在我的XML中使用android:id="@android:id/text1"
(使用id&#34创建一个新的TextView; text1&#34;)但在我的Java类中使用android:id="@+id:text1"
以便设置android.R.id.text1
在一个不存在的视图中的信息和我得到了完全相同的结果:列表视图包含没有文本的所有行。