Android GridView 项目和覆盖相对布局
我有一个使用自定义适配器动态创建的 GridView。单击 GridView 项目时,我必须在其下方显示一个气泡。我为此使用RelativeLayout,但每次气泡都会显示在左上角。
这是我的自定义适配器
public class GridAdapter extends BaseAdapter {
private Context mContext;
private GridItem[] items;
public GridAdapter(Context c) {
mContext = c;
items = GridItem.values();
//inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return items.length;
}
public GridItem getItem(int position) {
return items[position];
}
public long getItemId(int position) {
return items[position].getResourceId();
}
public static class ViewHolder {
public ImageView image;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(GridView.LayoutParams.WRAP_CONTENT,
GridView.LayoutParams.WRAP_CONTENT));
//imageView.setPadding(10, 10, 10, 10);
} else {
imageView = (ImageView) convertView;
}
imageView.setBackgroundResource(items[position].getResourceId());
if (position == 3) {
ImageView helpBubble = new ImageView(mContext);
}
//imageView.setTag(items[position]);
return imageView;
}
}
这是设置气泡的代码
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
GridItem item = GridItem.values()[position];
if (position != 6) {
Toast.makeText(HelpModeActivity.this, "Clicked on : " + item.getResourceId(), Toast.LENGTH_LONG)
.show();
LayoutInflater inflate = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout helpBubble = (RelativeLayout) inflate.inflate(R.layout.bubble, null);
TextView helpText = (TextView) helpBubble.findViewById(R.id.bubble_text);
helpText.setText("Lorem Epsum Dolor Emit ab asdfj asdflqwe fsadf wqrwqer asdfasdf wfsad asdfasdf rqwerqwrw");
Button moreButton = (Button) helpBubble.findViewById(R.id.bubble_button);
moreButton.setText("More Info");
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.BELOW, item.getResourceId());
gridRL.addView(helpBubble, lp);
}
我哪里出错了???
I have a dynamically created GridView using a custom adapter. On clicking the GridView item, I have to display a bubble under it. I am using RelativeLayout for this, but everytime the bubble is getting displayed on the top left corner.
This my custom adapter
public class GridAdapter extends BaseAdapter {
private Context mContext;
private GridItem[] items;
public GridAdapter(Context c) {
mContext = c;
items = GridItem.values();
//inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return items.length;
}
public GridItem getItem(int position) {
return items[position];
}
public long getItemId(int position) {
return items[position].getResourceId();
}
public static class ViewHolder {
public ImageView image;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(GridView.LayoutParams.WRAP_CONTENT,
GridView.LayoutParams.WRAP_CONTENT));
//imageView.setPadding(10, 10, 10, 10);
} else {
imageView = (ImageView) convertView;
}
imageView.setBackgroundResource(items[position].getResourceId());
if (position == 3) {
ImageView helpBubble = new ImageView(mContext);
}
//imageView.setTag(items[position]);
return imageView;
}
}
Here's the code to set the bubble
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
GridItem item = GridItem.values()[position];
if (position != 6) {
Toast.makeText(HelpModeActivity.this, "Clicked on : " + item.getResourceId(), Toast.LENGTH_LONG)
.show();
LayoutInflater inflate = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout helpBubble = (RelativeLayout) inflate.inflate(R.layout.bubble, null);
TextView helpText = (TextView) helpBubble.findViewById(R.id.bubble_text);
helpText.setText("Lorem Epsum Dolor Emit ab asdfj asdflqwe fsadf wqrwqer asdfasdf wfsad asdfasdf rqwerqwrw");
Button moreButton = (Button) helpBubble.findViewById(R.id.bubble_button);
moreButton.setText("More Info");
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.BELOW, item.getResourceId());
gridRL.addView(helpBubble, lp);
}
Where am I going wrong???
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论