gpt4 book ai didi

Android自定义ListView项(findViewById返回null)

转载 作者:太空狗 更新时间:2023-10-29 13:27:06 25 4
gpt4 key购买 nike

我正在尝试用这个 LazyAdapter 填充自定义 ListView来自这个 tutorial 的类(class)

我想制作具有自定义设计的 ListView 项目。布局文件 list_row.xml 在我的布局文件中,就像在教程中一样。这是 LazyAdapter 类中的一个略微修改的 getView 函数:

public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
//vi = inflater.inflate(R.layout.list_row, null); //EDITED
vi = inflater.inflate(R.layout.list_row, parent, false);
TextView title = (TextView)vi.findViewById(R.id.title); // title
TextView subtitle = (TextView)vi.findViewById(R.id.subtitle); // artist name
//ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image);

//This is not needed
//HashMap<String, String> post = new HashMap<String, String>();
HashMap<String, String> post;
post = data.get(position);
// Setting all values in listview
title.setText(post.get("title")); //the code crashes here
subtitle.setText(post.get("subtitle"));
//imageLoader.DisplayImage(song.get(CustomizedListView.KEY_THUMB_URL), thumb_image);
return vi;
}

这段代码在 title.setText() 处崩溃,因为标题为空。我在某处读到这是有道理的,因为这个 LazyAdapter 在 setContentView 或其他东西之前调用了 findViewById ..

那么我该怎么做呢?这段代码如何为那个人工作?

更新

这是 list_row.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_selector"
android:orientation="horizontal"
android:padding="5dip" >

<!-- Title -->
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#040404"
android:typeface="sans"
android:textSize="14sp"
android:textStyle="bold"/>

<!-- Subtitle -->
<TextView
android:id="@+id/subtitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/subtitle"
android:textColor="#343434"
android:textSize="10sp"
android:layout_marginTop="1dip" />

</RelativeLayout>

为了节省空间,我只添加了主 Activity 布局文件中的 ListView xml:

<ListView
android:id="@+id/feedListView"
android:layout_marginTop="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/volumeControl1">
</ListView>

适配器代码:http://pastebin.com/niC1yXiJ

堆栈跟踪:http://pastebin.com/myW8B0Xz

最佳答案

尝试在给单元格充气时传入父级。使用这个 method :

public View inflate (int resource, ViewGroup root, boolean attachToRoot)

vi = inflater.inflate(R.layout.list_row, parent, false);

关于Android自定义ListView项(findViewById返回null),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20343102/

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