gpt4 book ai didi

Android 自定义适配器 + ListView (未完全工作)

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:42 24 4
gpt4 key购买 nike

我正在玩我的第一个带数据库的 Android 应用程序。让我的自定义适配器和它自己的行 View 正常工作。它应该包含图标、名称和描述。一切,除了名字都在那里。试图调试它,将其写在 logcat 中,一切似乎都很好。只是我的应用程序不会显示它。

有人可以看一下并帮助我吗?非常感谢。

我的自定义行 View 称为 exercise_item.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip" >

<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="60dip"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true"
android:layout_marginRight="6dip"
android:contentDescription="TODO"
android:src="@drawable/ic_launcher" />

<TextView
android:id="@+id/description"
android:layout_width="fill_parent"
android:layout_height="26dip"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_toRightOf="@id/icon"
android:ellipsize="marquee"
android:singleLine="true"
android:textSize="12sp" />

<TextView
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="34dip"
android:layout_above="@id/description"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_toRightOf="@id/icon"
android:textSize="16sp" />

现在我们正在处理的 Activity 布局(我想最重要的部分是列表):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".ExerciseManagementActivity" >


<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="24dp"
android:text="@string/title_activity_exercise_management"
android:textAppearance="?android:attr/textAppearanceLarge" />

<Button
android:id="@+id/button_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_centerHorizontal="true"
android:layout_marginTop="26dp"

android:text="Add new" />

<EditText
android:id="@+id/editText1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/button_add"
android:layout_centerHorizontal="true"
android:layout_margin="10dp"
android:layout_marginTop="25dp"
android:ems="10"
android:hint="name of exercise" >

<requestFocus />
</EditText>

<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="270dp"
android:layout_below="@+id/editText1"
android:layout_centerHorizontal="true"
android:layout_marginTop="32dp" >
</ListView>

<TextView
android:id="@+id/android:empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/editText1"
android:layout_centerHorizontal="true"
android:layout_marginTop="32dp"
android:text="@string/main_no_items"/>

最后,自定义适配器:

public class ExerciseAdapter extends ArrayAdapter<Exercise>{

private final Context context;


public ExerciseAdapter(Context context, int resource, ArrayList<Exercise> results) {
super(context, resource, results);
this.context = context;
}

/*private view holder class*/
private class ViewHolder {
ImageView imageView;
TextView txtTitle;
TextView txtDesc;
}


public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;

LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

if (convertView == null) {
convertView = mInflater.inflate(R.layout.exercise_item, null);
holder = new ViewHolder();
holder.txtDesc = (TextView) convertView.findViewById(R.id.description);
holder.txtTitle = (TextView) convertView.findViewById(R.id.name);
holder.imageView = (ImageView) convertView.findViewById(R.id.icon);
convertView.setTag(holder);
} else
holder = (ViewHolder) convertView.getTag();

holder.txtDesc.setText(getItem(position).getDescription());
Log.d("ITEM DESC", "ITEMDESC: " + getItem(position).getDescription() );
holder.txtTitle.setText( getItem(position).getName());
Log.d("ITEM NAME", "ITEMNAME: " + getItem(position).getName() );
holder.imageView.setImageResource(R.drawable.ic_launcher);

return convertView;
}

}

正如我之前提到的,没有错误,应用程序运行正常。显示正确的图标和描述,但没有名称(即使在 logcat 中)。我试图将硬编码字符串设置为名称,但没有成功。一定有什么与布局有关,还是我错了?

再次提前致谢。伊戈尔

最佳答案

删除这些行 机器人:layout_alignParentBottom =“真” android:layout_alignParentRight="true"来自

关于Android 自定义适配器 + ListView (未完全工作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22337337/

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