如何动态地将ImageButtons和OnClick Listener添加到300多个图像?

时间:2014-11-15 03:17:56

标签: javascript android eclipse android-layout

好吧,我真的需要一些帮助,因为我让自己疯了。我有一个消息传递应用程序,我想添加大约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监听器每。感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

使用GridView或ListView。然后创建一个Adapter并调用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(),只需google&#39; list adapter&#39;

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

ListView.setOnItemClickListener()

答案 1 :(得分:0)

使用GridViewListView,他们有adapter,因此他们可以轻松处理onClick,并且它们的目的是显示大量数据。< / p>