标签:
这几天要在ListView条目中嵌套GridView,首先按照网上说的,自定义一个GridView,重写OnMearue方法啥的,按照网上的来就行,重点:
在ListView的适配器的getView()方法中,
holder.gv.setTag(position);//给当前的GridView设置一个位置标记,把ListView当前的位置设置进去
然后在GridView的点击事件中 :
//取出GridView在ListView的item中的位置标记,就得到了GridVIew在ListView中的位置
int lv_item_postion=(Integer)holder.gv.getTag();
代码如下:
//这个是ListView的适配器
class FrendsAdapter extends BaseAdapter { @Override public int getCount() { return mResults_list.size(); } @Override public Object getItem(int i) { return mResults_list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View convertView, ViewGroup viewGroup) { final ViewHolder holder; if (convertView != null) { holder = (ViewHolder) convertView.getTag(); } else { convertView = View.inflate(UIUtils.getContext(), R.layout.lv_item_message_friends, null); holder = new ViewHolder(convertView); convertView.setTag(holder); } //获取某条分享的动态 Message_Responce_Info.EveryShareInfo info = mResults_list.get(i); //获取当前分享动态的所有回复的集合 ArrayList<Message_Responce_Info.EveryShareInfo.Reply> replys = info.getPub_com(); //动态添加评论之前先移除评论线性布局里的所有子View holder.ll_comment_message_friends.removeAllViews(); for (int j = 0; j < replys.size(); j++) { TextView textView = new TextView(UIUtils.getContext()); textView.setPadding(0, 8, 0, 0); textView.setText(replys.get(j).getPc_name() + ": " + replys.get(j).getPc_txt()); textView.setTextColor(Color.DKGRAY); holder.ll_comment_message_friends.addView(textView); } holder.tvUserName.setText(info.getPub_frd_name());//设置好友动态分享者的名字 holder.tvTime.setText(info.getPub_datetime());//设置分享这条动态的时间 holder.tvSaySth.setText(info.getPub_context());//设置分享动态的内容 ArrayList<String> small_pics = info.getPub_th_img();//说说图片的缩略图集合 holder.gv.setTag(i);//给当前的GridView设置一个位置标记 Message_Friends_GridViewAdapter gridAdapter = new Message_Friends_GridViewAdapter(small_pics); holder.gv.setAdapter(gridAdapter);//设置GridView的适配器 // TODO: 15-12-30 //给GridView设置条目点击监听 holder.gv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { //取出GridView在ListView的item中的位置标记,就得到了GridVIew在ListView中的位置 int lv_item_postion=(Integer)holder.gv.getTag(); // Log.d("msg","GridView在ListView里面的位置--->"+lv_item_postion); //点击的这条说说信息 Message_Responce_Info.EveryShareInfo shareInfo = mResults_list.get(lv_item_postion); ArrayList<String> big_pics = shareInfo.getPub_img();//大图集合 // TODO: 15-12-30 holder.gv.getAdapter,获取点击的GridView的那个适配器,然后拿到放到里面的listView的条目的序号 Intent intent = new Intent(UIUtils.getContext(), MessageImageShowActivity.class); intent.putStringArrayListExtra("bigPics", big_pics);//把说说图片的大图集合传过去 intent.putExtra("bigPicPostion", position);//把点击的那个说说图片位置传过去 startActivity(intent); } }); //显示用户头像 ImageLoader.getInstance().displayImage(GlobalConstant.SERVER_URL + "/" + info.getPub_frd_head(), holder.ivUserFace); return convertView; } }
ListView嵌套GridView的一些处理(点击GridView的条目,能够显示他在ListView中的位置)
标签:
原文地址:http://www.cnblogs.com/android-yus/p/5090749.html