安卓listview adapter
来源:互联网 发布:windows xp哪个版本好 编辑:程序博客网 时间:2024/04/29 13:43
1.首先添加一个布局listview
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> //android:divider="@null"去掉listview分割线 <ListView android:id="@+id/redpageList" android:divider="@null" android:layout_width="wrap_content" android:layout_height="wrap_content"> </ListView></LinearLayout>
2.创建一个activity加载listview布局
public class RedPageActivity extends Activity { private ListView lv; //判断复用问题的map int坐标 bool为是否加载过 true为存在 falsely不存在 private Map<Integer,Boolean> selectedMap=new HashMap<>(); //提供了一种关于显示的通用信息,如显示大小,分辨率和字体 DisplayMetrics dm = new DisplayMetrics(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //加载listview布局 setContentView(R.layout.activity_redpage); //获取listview lv=(ListView)findViewById(R.id.redpageList); //初始化map的数据 都为false for (int i = 0; i < 10; i++) { selectedMap.put(i, false); } getWindowManager().getDefaultDisplay().getMetrics(dm); //获取系统宽度 System.out.println("dm"+dm.widthPixels); //创建的adapter RedpageActivityAdapter redpageAdapter=new RedpageActivityAdapter(this,selectedMap,dm); //给listview设置适配器 lv.setAdapter(redpageAdapter); //点击事件 lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { System.out.println("aaa"+position); //判断复用问题 //不存在就put if (!selectedMap.containsKey(position)){ selectedMap.put(position,true); } else{ //存在就改变 boolean isCheck=selectedMap.get(position); selectedMap.put(position,!isCheck); } RedpageActivityAdapter.ViewHolder viewHolder = (RedpageActivityAdapter.ViewHolder) parent.getTag(); //一个属性动画 ObjectAnimator animator = ObjectAnimator.ofFloat(view.findViewById(R.id.redup), "translationX", 0, -(dm.widthPixels)); ObjectAnimator animator2 = ObjectAnimator.ofFloat(view.findViewById(R.id.redback), "translationX", 0, -(dm.widthPixels)); AnimatorSet animSet=new AnimatorSet(); animSet.playTogether(animator,animator2); animSet.setDuration(400); animSet.start(); } }); }}
3创建RedpageActivityAdapter
public class RedpageActivityAdapter extends BaseAdapter { //数据集合 private List arrayList=new ArrayList(); //上下文对象 private Context context; private Map<Integer,Boolean> map; DisplayMetrics dm; public RedpageActivityAdapter(Context context,Map<Integer,Boolean> map,DisplayMetrics dm) { this.context=context; this.map=map; this.dm=dm; System.out.println("dm"+dm); //一些假数据 for (int i=0;i<10;i++){ arrayList.add("zzz"+i); } } //集合的长度 @Override public int getCount() { return arrayList!=null&&arrayList.size()>0?arrayList.size():0; } //获取item @Override public Object getItem(int position) { return arrayList!=null&&arrayList.size()>0?arrayList.get(position):null; } //根据位置获取item @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if(convertView==null){ holder = new ViewHolder(); convertView = LayoutInflater.from(context).inflate(R.layout.adapter_red_page_fragment, null); holder.relative=(RelativeLayout) convertView.findViewById(R.id.relative); AbsListView.LayoutParams params=new AbsListView.LayoutParams((int)(dm.widthPixels-20*dm.density),(int)(dm.widthPixels-20*dm.density)/2); holder.relative.setLayoutParams(params); holder.redaon=(ImageView) convertView.findViewById(R.id.redaon); holder.redback=(ImageView) convertView.findViewById(R.id.redback); holder.redup=(ImageView) convertView.findViewById(R.id.redup); holder.textView=(TextView)convertView.findViewById(R.id.textView);// holder.relative.setOnClickListener(new View.OnClickListener() {// @Override// public void onClick(View v) {//// int index=((ViewGroup)v.getParent()).indexOfChild(v);// System.out.println("aaaa"+index);// System.out.println("aaaa"+v.getId());// float curTranslationX = v.findViewById(R.id.redup).getTranslationX();// ObjectAnimator animator = ObjectAnimator.ofFloat(v.findViewById(R.id.redup), "translationX", curTranslationX, -600f);// ObjectAnimator animator2 = ObjectAnimator.ofFloat(v.findViewById(R.id.redback), "translationX", curTranslationX, -500f);//// animator.setDuration(5000);//// animator.start();// AnimatorSet animSet = new AnimatorSet();// animSet.playTogether(animator,animator2);// animSet.setDuration(500);// animSet.start();// }// }); convertView.setTag(holder); }else{ holder = (ViewHolder)convertView.getTag();//取出ViewHolder对象 } //holder.redup.setImageResource(R.id.redup); holder.textView.setText(getItem(position).toString()); boolean flag=map.get(position); if(flag){ //移动当前的 ObjectAnimator animator = ObjectAnimator.ofFloat(holder.redup, "translationX", 0, -(dm.widthPixels)); ObjectAnimator animator2 = ObjectAnimator.ofFloat(holder.redback, "translationX", 0, -(dm.widthPixels)); AnimatorSet animSet=new AnimatorSet(); animSet.playTogether(animator,animator2); animSet.setDuration(0); animSet.start(); }else { //原始位置 ObjectAnimator animator = ObjectAnimator.ofFloat(holder.redup, "translationX", 0, -0); ObjectAnimator animator2 = ObjectAnimator.ofFloat(holder.redback, "translationX", 0, -0); AnimatorSet animSet=new AnimatorSet(); animSet.playTogether(animator,animator2); animSet.setDuration(0); animSet.start(); } return convertView; } //自定义viewholder用于初始化话控件 public class ViewHolder { private RelativeLayout layout; public ImageView redback; public ImageView redaon; public ImageView redup; public TextView textView; RelativeLayout relative; }}
4.listview中的小布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/relative" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp" > <ImageView android:id="@+id/redback" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@mipmap/redback" /> <ImageView android:id="@+id/redaon" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@mipmap/redaon" android:gravity="center_vertical" android:layout_margin="10dp" /> <!--android:layout_centerVertical="true"--> <ImageView android:id="@+id/redup" android:layout_marginRight="100dp" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@mipmap/redup" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" android:text="44444444" android:layout_below="@+id/textView" /></RelativeLayout>
大概效果
0 0
- 安卓listview adapter
- 安卓打造listview的万用adapter
- 安卓 LIstView Adapter使用ViewHolder
- 安卓自定义Adapter,以及如何提高ListView的效率
- 安卓ListView根据Adapter动态设置高度
- 安卓Adapter用法
- 安卓adapter适配器
- 安卓客户端与服务器的通信及ListView、adapter、fastjson的使用
- 安卓开发中Listview与Adapter的相关用法介绍
- 安卓--ListView和Adapter的关系和如何使用实例
- 安卓1103_数据库 database Mysql sqlite ListView Adapter适配器
- ListView配合安卓适配器Adapter和迭代器Iterator的用法整理
- 安卓学习之使用listview设置adapter时,解决动态显示图片的问题
- 安卓 Adapter 使用详解
- 安卓学习之Adapter
- 安卓开发-cursor adapter
- 安卓Adapter之SimpleAdapter
- 安卓的适配器Adapter
- 隐式Intent
- okhttp
- android微信第三方登录
- android微信第三方登录2
- genymotion模拟器安装apk
- 安卓listview adapter
- android微信支付
- 树莓派默认用户名和密码
- 左右最值最大差
- 弹性盒模型总结
- 树莓派自启动脚本
- androidstudio 快捷键
- 浏览器访问app
- android自定义View贝赛尔曲线