首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android gridview滑动后数据紊乱处置

2012-11-11 
android gridview滑动后数据紊乱处理工单列表以GridView方式实现,希望点击某一个Item后,点击的Item能变换

android gridview滑动后数据紊乱处理
工单列表以GridView方式实现,希望点击某一个Item后,点击的Item能变换自己的背景,标识为当前点击项。试了网上几种方法都不是很好(请见http://blog.sina.com.cn/s/blog_642e41c201013ob1.html;http://blog.csdn.net/chinaguangzhou000000/article/details/6697184;以及:gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
      ImageView iv = null;
      iv = new ImageView(arg0.getContext());
      webView.loadUrl(listmenus.get(arg2).getUrl());
      ShowImageFileFromAsset(listmenus.get(arg2).getImgselected(), iv);
      LinearLayout ll = (LinearLayout) arg1;
      TextView ltext = (TextView) ll.getChildAt(1);
      ll.removeAllViews();
      ll.addView(ltext, 0);
      ll.addView(iv, 0);;
   }
});),会遇到以下问题:1.选择某一项(“A”)后,在选择其他项(“B”),B改变了颜色,A没有改变为未选择项;2.选择某一项(“A”)后,滑动列表后,A又变成未选择项了;都是影响客户感知。经过多次探索,一下方式实现,方便简单://适配器(红色为修改处)public class DesignOrderAdapter extends BaseAdapter {private List<DesignOrderForm> list = new ArrayList<DesignOrderForm>();private LayoutInflater mInflater;private int clickTemp = -1;public DesignOrderAdapter(DesignOrderActivity designOrderActivity,List<DesignOrderForm> designOrderList) {       mInflater = (LayoutInflater) designOrderActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);       this.list = designOrderList;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn this.list.size();}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn arg0;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}           //标识选择的Itempublic void setSeclection(int position) {clickTemp = position;}
@Overridepublic View getView(int position, View convertView, ViewGroup parent) {.....//其他代码// 点击改变选中listItem的背景色if (clickTemp == position) {orderlayout.setBackgroundResource(R.drawable.left_list_xuanzhong);} else {orderlayout.setBackgroundColor(Color.TRANSPARENT);}}                   .....//其他代码}

//initView初始化UI时,GridView监听事件designOrderGridView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {                        ........//其他代码                 //设置适配器designOrderAdapter.setSeclection(arg2);designOrderAdapter.notifyDataSetChanged();                       ........//其他代码}});以下点击每个Item后都会标识成选择项,点击其他Item项后,原Item变成原来未标识。适配器也不会刷新!附加一个小知识:designOrderGridView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3)各项的意义:arg0是点击的当前适配器           arg1是当前item的view,通过它可以获得该项中的各个组件。 
          arg2是当前item的ID。这个id根据你在适配器中的写法可以自己定义。 
          arg3是当前的item在listView中的相对位置! 

热点排行
Bad Request.