1.2.1 第一个Item的ImageView显示不全,总是显示一半,其他的Item没有问题,如论怎么设置都没用
1.2.2 第一个Item里面设置的点击事件不管用,但是轻轻的滚动一下点击事件立马就生效了。
解决方式:
@Override
public View getView(int position, View converView, ViewGroup parent) {
final Map<String, Object> map = res.get(position);
ViewContent viewContent;
if (converView == null) {
converView = View.inflate(context, resLayoutId, null);
viewContent = new ViewContent();
converView.setLayoutParams(new GridView.LayoutParams((int) (parent.getWidth() / 3) - 1, (int) (parent.getHeight() / 3)));
viewContent.iv = (ImageView) converView.findViewById(R.id.imageView1);
viewContent.tv = (TextView) converView.findViewById(R.id.textView1);
converView.setTag(viewContent);
} else {
viewContent = (ViewContent) converView.getTag();
converView.setLayoutParams(new GridView.LayoutParams((int) (parent.getWidth() / 3) - 1, (int) (parent.getHeight() / 3)));
}
viewContent.iv.setImageResource((Integer) map.get(Constants.POPUP_GRID_VIEW_PICTURE));
viewContent.tv.setText((CharSequence) map.get(Constants.POPUP_GRID_VIEW_TEXT));
return converView;
}
点击问题:
/** * 可以显示9条数据的Gridview * * @param res 传递给GridView的变量 * @param context * @param resLayoutId */ public MyViewPagerGridViewAdapter(final List<Map<String, Object>> res, Context context, int resLayoutId) { super(); this.res = res; this.context = context; this.resLayoutId = resLayoutId; view = new ArrayList<GridView>(); //每九条产生一个GridView int size = res.size() % LENGTH == 0 ? res.size() / LENGTH : res.size() / LENGTH + 1; for (int i = 0; i < size; i++) { GridView gridView = new GridView(context); gridView.setNumColumns(3); gridView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); gridView.setSelector(new ColorDrawable(Color.TRANSPARENT)); // gridView.setBackgroundResource(R.drawable.icon_jw_chat_face_bg); gridView.setGravity(Gravity.CENTER); gridView.setColumnWidth(90); //从原本的集合中换成自定义长度的集合 // (res.size()-(i+1)*LENGTH)>0?(i+1)*LENGTH:res.size(); List<Map<String, Object>> subList = res.subList(i * LENGTH, (res.size() - (i + 1) * LENGTH) > 0 ? (i + 1) * LENGTH : res.size()); gridView.setAdapter(new GridViewAdapter(subList, context, R.layout.grid_layout_item)); final int flag = i; //设置点击事件 gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // ToastUtils.showShort(position + ""); // res.get(position * flag); if (Tool.getmPopupWindow() != null) { Tool.getmPopupWindow().dismiss(); } ((GridViewAdapter.PopupItemClickListener) res.get(position + flag * LENGTH).get(Constants.POPUP_GRID_VIEW_CLICK)).onClick(view); } }); view.add(gridView); } }
http://www.cnblogs.com/over140/p/3999815.html
http://blog.csdn.net/X_i_a_o_H_a_i/article/details/41822505
http://stackoverflow.com/questions/20437404/why-is-changing-where-layout-parameters-are-set-solving-my-onclicklistener-not