gpt4 book ai didi

android - 如何以编程方式将空行添加到 GridView :

转载 作者:搜寻专家 更新时间:2023-11-01 08:46:59 25 4
gpt4 key购买 nike

我知道这个问题已经被问过几次了,我知道你会说 GridView 和 ListView 对象一样也由应该填充网格行的适配器实现支持。

我的要求如下: 我有一个表情符号的 GridView ,当我按下我开发的键盘上的其中一个按钮时会显示这些表情符号。作为这个表情符号 gridview 的一部分,我在它的底部有一个按钮 View ,以允许用户继续使用键盘(空格、删除、返回常规键盘等按钮等等)

现在我想向 gridview 添加一个空行,这样我就可以允许用户在网格的最后一行选择表情符号(如果我不将此行添加到最后一行 GridView 位于附加按钮 View 的后面,无法选择)这是一个示例:

Emoticons keyboard screenshot

如您所见,最后一行位于附加按钮 View 的后面,无法按下。我不能只向 gridview 添加任意数量的空图标,因为当从一个设备移动到另一个设备时,一行中的图标数量会发生变化。

所以问题是如何在不考虑行中项目数的情况下向此 gridview 添加一个空行?

这是我的代码:

public class EmojiconGridView{
public View rootView;
EmojiconsPopup mEmojiconPopup;
EmojiconRecents mRecents;
Emojicon[] mData;

public EmojiconGridView(Context context, Emojicon[] emojicons, EmojiconRecents recents, EmojiconsPopup emojiconPopup) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
mEmojiconPopup = emojiconPopup;
rootView = inflater.inflate(R.layout.emojicon_grid, null);
setRecents(recents);
GridView gridView = (GridView) rootView.findViewById(R.id.Emoji_GridView);
if (emojicons== null) {
mData = People.DATA;
} else {
Object[] o = (Object[]) emojicons;
mData = Arrays.asList(o).toArray(new Emojicon[o.length]);
}
EmojiAdapter mAdapter = new EmojiAdapter(rootView.getContext(), mData);
mAdapter.setEmojiClickListener(new OnEmojiconClickedListener() {

@Override
public void onEmojiconClicked(Emojicon emojicon) {
if (mEmojiconPopup.onEmojiconClickedListener != null) {
mEmojiconPopup.onEmojiconClickedListener.onEmojiconClicked(emojicon);
}
if (mRecents != null) {
mRecents.addRecentEmoji(rootView.getContext(), emojicon);
}
}
});
gridView.setAdapter(mAdapter);
View newEmpryView = new View(context);
gridView.addView(newEmpryView);

}

private void setRecents(EmojiconRecents recents) {
mRecents = recents;
}

public interface OnEmojiconClickedListener {
void onEmojiconClicked(Emojicon emojicon);
}

明确的行:

 gridView.addView(newEmpryView);

给我一​​个异常(exception)::addView(View) 在 AdapterView 中不受支持,那么如何实现呢?谢谢。

最佳答案

您需要在 GridView 的最后一行添加一个空白项,这样您会得到一个空白行。

要获取 GridView 中的列数,您可以使用以下代码:

private int getNumColumnsCompat(Context aContext) {
DisplayMetrics d = aContext.getResources().getDisplayMetrics();
int w = d.widthPixels;
float density = d.density;
int num = (int) (w / (40 * density)) - 1; // 40 is the columnWidth of your Emoji_GridView
return num;
}

之后,像下面的代码一样向您的 GridView 添加一个空白行:

private void addItemsToList(int aNumColumnsCompat) {
for (int i = 0; i < aNumColumnsCompat; i++) {
mEmojiList.add(new Emojicon(""));
}
}

关于android - 如何以编程方式将空行添加到 GridView :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27345368/

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