【发布时间】:2014-12-07 17:16:07
【问题描述】:
我知道这个问题已经被问过几次,而且我知道您会说 GridView 与 ListView 对象一样也由应填充网格行的适配器实现支持。
我的要求如下:我有一个表情符号的网格视图,当我按下我开发的键盘上的一个按钮时会显示这些表情符号。作为此表情符号网格视图的一部分,我在其底部有一个按钮视图,以允许用户继续使用键盘(空格、删除、返回常规键盘等按钮...)
现在我想在网格视图中添加一个空行,这样我就可以允许用户在网格的最后一行选择表情符号(如果我不将此行添加到最后一行网格视图位于附加按钮视图后面,无法选择)这是一个示例:
正如您在此处看到的,最后一行位于附加按钮视图的后面,无法按下。我不能只在 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);
给了我一个例外::addView(View) is not supported in AdapterView,那么如何实现呢?谢谢。
【问题讨论】:
-
你能发布你的布局吗?我猜你需要使用 layout_below 或使用 verrical linearlayout 来处理这个
标签: android gridview row adapter android-gridview