gpt4 book ai didi

android - 访问定义为 LinearLayout 的 ListItem 内的 subview

转载 作者:行者123 更新时间:2023-11-30 04:44:19 27 4
gpt4 key购买 nike

我正在尝试在 setOnItemClickListener 方法内检索在我的 ListItem 布局中定义的 TextView 的 getText() 值。

基本上,我想记录数据(Id、LookupKey、DisplayName 或 PhoneNumber),以便无论使用何种 ListView /适配器,我都可以检索所选的联系人。

我显示一个简单的 TextView 和一个根据数据设置可见性的 Imageview。这是布局:contact_entry.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content" android:baselineAligned="false"
android:layout_width="fill_parent" android:padding="5px">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:textSize="16px"
android:text="@+id/contactEntryText" android:id="@+id/contactEntryText">
</TextView>
<TableRow android:paddingLeft="5px" android:visibility="visible"
android:paddingRight="5px" android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/indicator_logo_table"
android:gravity="right">
<ImageView android:layout_width="wrap_content"
android:id="@+id/imageView1"
android:layout_height="fill_parent"
android:src="@drawable/indicator">
</ImageView>
</TableRow>
</LinearLayout>

我使用的适配器定义如下:

SimpleAdapterWithImageView adapter = new SimpleAdapterWithImageView(
this, R.layout.contact_entry, cursor, fields,
new int[] { R.id.contactEntryText });
mContactList.setAdapter(adapter);

(您可能已经猜到这是为了显示来自 ContactsContract ContentProvider 的联系人的 Display_Name。)

最后是 mContactList.setOnItemClickListener ...

mContactList.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {

LinearLayout linear = (LinearLayout) view.findViewById(R.layout.contact_entry);
Log.i("done","linear layout"); // it's not done at all ! findViewById returns null;

//this part is currently useless
TextView displayed_name = (TextView) linear.findViewById(R.id.contactEntryText);
Log.i("done","Displayed name = linear.findViewById contactentrytext");


Toast.makeText(getApplicationContext(),
// displayed_name.getText(), //
//view.getContentDescription(), //
Toast.LENGTH_SHORT).show();
}

如您所见,我暂时只是想表达 toast ,最后名称将作为 Intent 的额外内容。

所以:我在过去 36 小时(叹气)中得到的最好结果是在 toast 中显示第一个联系人的姓名,即使在单击第二个项目时也是如此......

TextView displayed_name = (TextView) findViewById(R.id.contactEntryText);
Toast.makeText(getApplicationContext(),displayed_name.getText(),
Toast.LENGTH_SHORT).show();
}

我一直在尝试谷歌提供的教程之类的东西 here ,这(我错了吗?我是 Android 的新手所以不要犹豫打我的脸......)实际上将整个 View 转换到 TextView 中......

加上其他技巧,例如 view.getChildAt() 等等……几个小时。

我相信这并不难,但我在原地转圈!我不认为这是因为我的适配器,但如果有人认为这可能是原因,我可以在另一篇文章中提供代码。

提前致谢!

最佳答案

LinearLayout linear = (LinearLayout) view.findViewById(R.layout.contact_entry);

这是一个错误 - 您不能在 findViewById 中使用 R.layout。通常,您需要在那里使用 R.id,或者通过扩充布局来替换 findViewById。但在这种情况下,您只需要参数中的 view

将 quted 代码替换为以下代码:
LinearLayout 线性 = (LinearLayout) view;

关于android - 访问定义为 LinearLayout 的 ListItem 内的 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5341160/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com