自定义适配器 - Android Studio

Posted

技术标签:

【中文标题】自定义适配器 - Android Studio【英文标题】:Custom Adapter - Android Studio 【发布时间】:2021-03-15 20:43:19 【问题描述】:

所以我尝试做一个自定义适配器,但即使没有错误,甚至 arrayList 也不为空-我确信我可以从中打印一些东西-,它不起作用,所以这是我的 customAdapter 类:

public class CurrentListingsCustomAdapter extends ArrayAdapter<CurrentListingsClass> 

    public ArrayList<CurrentListingsClass> currentListingsClassArrayList;
    public Activity context;

    public CurrentListingsCustomAdapter(ArrayList<CurrentListingsClass> currentListingsClassArrayList, Activity context) 
        super(context, R.layout.custom_view, currentListingsClassArrayList);
        this.currentListingsClassArrayList = currentListingsClassArrayList;
        this.context = context;
    

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) 
        LayoutInflater layoutInflater = context.getLayoutInflater();
        View customView = layoutInflater.inflate(R.layout.custom_view, null, true);

        TextView nameView = customView.findViewById(R.id.customTextView);
        nameView.setText(currentListingsClassArrayList.get(position).getDetails());

        return customView;
    


这是我的 custom_view.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_
    android:layout_>

    <TextView
        android:id="@+id/customTextView"
        android:layout_
        android:layout_
        android:gravity="center|center_horizontal"
        android:text="TextView"
        android:textSize="24sp" />
</LinearLayout>

提前致谢

【问题讨论】:

“它不起作用”是什么意思。你能解释什么不起作用吗?您是否设置了断点或添加了日志以查看您的适配器是否正在被实例化? getView() 被调用了吗?你需要给我们更多的信息。 无论如何,当您调用LayoutInflator.inflate() 时,第三个参数应该是false,因为您将null 作为父View 传递。 layoutInflater.inflate(R.layout.custom_view, null, true);改为layoutInflater.inflate(R.layout.custom_view, parent, false);可能还有其他问题,但这是必要的第一步。 @DavidWasser by 'isnt working' 我的意思是即使 arrayList 不为空,我想要显示的内容也没有显示,我很抱歉,但我不知道断点是什么我只是一个初学者,但我会努力学习和尝试。 @BenP。我试过了,但没有用 【参考方案1】:

像这样在你的类中重写这个方法。

    @Override
    public int getCount() 
        return currentListingsClassArrayList.size();
    

【讨论】:

在此行设置断点并确保您的列表有大小。 return currentListingsClassArrayList.size(); 我真的不知道那是什么,我是初学者 在android studio中点击行号旁边,应该会出现一个像图片一样的红色圆圈。这个红色圆圈的名字是breakpoint。在以调试模式 (Shift + F9) 运行程序之后,程序在您创建breakpoint 的那一行停止,并像图像一样打开一个窗口,告诉您从开始到您的breakpoint 的程序信息。因此,您可以轻松地显示您的currentListingsClassArrayList 信息。确保它具有大小,例如在图像中,您可以看到我的currentListingsClassArrayList 有 3 个对象。图片链接 [pasteboard.co/JDmaqG2.png] 我试过断点,但我看不到你的图像,而且调试日志太长我应该在哪里看? [pasteboard.co/JDmAzxF.png] 图片链接。调试选项卡 -> 变量。你可以看到你的currentListingsClassArrayList 对象

以上是关于自定义适配器 - Android Studio的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android Studio 中创建自定义图像按钮?

在 ListView 的自定义适配器中从 URL 加载图像(Android Studio)

在 Android Studio 中向列表视图添加自定义行

Android studio 自定义打包apk名

Android studio 自定义打包APK名称

在android studio中删除一个带有按钮的listview项目