如何动态地将图像按钮和 OnClick 侦听器添加到 300+ 图像

How to dynamically add ImageButtons and OnClick Listeners to 300+ images?

本文关键字:图像 按钮 OnClick 添加 300+ 侦听器 何动态 动态      更新时间:2023-09-26

好吧,我真的需要一些帮助,因为我快把自己逼疯了。我有一个消息传递应用程序,我想为它添加大约 300+ 表情符号/图片,这些表情符号/图片位于 res 文件夹中。它们的文件格式是"thumbs_00001.png,thumbs_00002.png,thumbs_00003.png等...

我有一个对话框打开并显示一个小菜单,供用户选择他们想要的图像:

           final Dialog dialog = new Dialog(this);
           dialog.setContentView(R.layout.emoticons);
           dialog.setTitle("Emoticons");
           dialog.show();

我通常会对所有 ImageButton 进行硬编码,但是 300+ 图像会花费我相当长的时间,我认为它可以动态完成(至少我希望如此)。问题是我不知道该怎么做,这就是我在这里问它的原因。

我需要弄清楚如何使用所有图像填充布局文件(即thumbs_00001.png到thumbs_00080.png,thumbs_00081.png到thumbs_00103.png等),然后为每个图像都有一个onclick侦听器。感谢您的任何帮助。

使用 GridView 或 ListView。然后创建一个适配器并调用ListView.setAdapter()来显示您的映像列表。如果你把你的表情符号/图片放在res/drawable文件夹中,你可以在你的xml文件中定义一个数组,女巫看起来像:

<resources>
    <array name="emoticons">
        <item>@drawable/thumbs_00001</item>
        ......
    </array>
</resources>

在您的 java 代码中:

int[] emoticonArray = getResources().getIntArray(R.array.emoticons);

或者你可以像这样硬编码:

int[] emoticonArray = new int[]{R.drawable.thumbs_00001, R.drawable.thumbs_00002, ...};

然后实现您的适配器:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        convertView = new ImageView(mContext);
    }
    ((ImageView)convertView).setImageResource(emotionArray[position]);
    return convertView;
}

你需要实现其他方法,如getCount(),只是谷歌的"列表适配器"

要在每个项目上设置 OnClickListener,请调用

ListView.setOnItemClickListener()

使用GridViewListView,它们具有adapter,因此可以轻松处理onClick,并且它们旨在显示大量数据。