标签:
前几天写了点击GRIDVIEW的条目,能够显示他在LISTVIEW中的位置,当时的处理是在ListView的适配器里的GetView方法里每次都new GridView的onItemClickListener,这样显然是不合理的,
/**GridVIew的条目点击监听*/ private GvOnItemClickListener mGvOnItemClickListener;//成员
这是Fragment的入口:
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_message_firends, null);//ViewGroup ? ButterKnife.bind(this, view); mObserver = new MyObserver();//创建一个观察者对象 //创建一个访问网络的Control Message_Net_Control control = new Message_Net_Control(this); control.getFriendsShareFromServer();//访问网络并且解析Json mListView.setDivider(null); mGvOnItemClickListener=new GvOnItemClickListener(); return view; }
这是ListView的适配器的GetView方法:
@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设置一个位置标记 //在设置GridVIewAdapter的时候先传进去listView的条目位置 Message_Friends_GridViewAdapter gridAdapter = new Message_Friends_GridViewAdapter(small_pics); holder.gv.setAdapter(gridAdapter);//设置GridView的适配器 //给GridView设置条目点击监听 holder.gv.setOnItemClickListener(mGvOnItemClickListener); //显示用户头像 ImageLoader.getInstance().displayImage(GlobalConstant.SERVER_URL + "/" + info.getPub_frd_head(), holder.ivUserFace); return convertView; }
点击监听,在成员里
/**自定义的GridView的点击监听*/ class GvOnItemClickListener implements AdapterView.OnItemClickListener{ /** * * @param adapterView 相当于Holder,ListVIew的条目,在这里相当于ListView里的GridViewEx * @param view 表示GridView的条目 * @param position GridVIew里的条目位置 * @param l */ @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { int lv_item_position= (Integer) adapterView.getTag();//GridView在ListView条目里的位置 //点击的这条说说信息 Message_Responce_Info.EveryShareInfo shareInfo = mResults_list.get(lv_item_position); ArrayList<String> big_pics = shareInfo.getPub_img();//大图集合 Intent intent = new Intent(UIUtils.getContext(), MessageImageShowActivity.class); intent.putStringArrayListExtra("bigPics",big_pics);//把说说图片的大图集合传过去 intent.putExtra("bigPicPostion",position);//把点击的那个说说图片位置传过去 startActivity(intent); } }
这样每次只new 一个onItemClickListener,并且也达到了效果。
LISTVIEW嵌套GRIDVIEW的一些处理(点击GRIDVIEW的条目,能够显示他在LISTVIEW中的位置)(对这篇文章的优化处理,不每次都new onItemClickListener)
标签:
原文地址:http://www.cnblogs.com/android-yus/p/5098206.html