zoukankan      html  css  js  c++  java
  • ListAdapter列表适配器

    ListAdapter列表适配器其实是继承了BaseAdapter

    示例图:

    MainActivity
    package com.shaoxin.mylistadapter;
    
    import android.app.ListActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.BaseAdapter;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import static com.shaoxin.mylistadapter.R.drawable.b;
    import static com.shaoxin.mylistadapter.R.drawable.c;
    
    public class MainActivity extends ListActivity {
        private List<Map> list;
        private String[] strPerson = {"妹子", "美女", "美美", "大美女"};
        private int[] iDrawble = {R.drawable.a, b, c, R.drawable.d};
        MyAdapter myAdapter;
        private float fFirstx;
        private float fSecx;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    TextView textView = (TextView) view.findViewById(R.id.txt);
                    Log.v("msg", textView.getText().toString());
                }
            });
            list = new ArrayList<>();
            for (int i = 0; i < strPerson.length; i++) {
                Map map = new HashMap();
                map.put("person", strPerson[i]);
                map.put("id", iDrawble[i]);
                list.add(map);
            }
            myAdapter = new MyAdapter();
            setListAdapter(myAdapter);
        }
    
        public class MyAdapter extends BaseAdapter {
    
            @Override
            public int getCount() {
                return list.size();
            }
    
            @Override
            public View getView(final int position, View convertView, ViewGroup parent) {
                ViewHold viewHold = new ViewHold();
                if (convertView == null) {
                    convertView = View.inflate(MainActivity.this, R.layout.listview_item, null);
                    viewHold.strName = (TextView) convertView.findViewById(R.id.txt);
                    viewHold.iDrawable = (ImageView) convertView.findViewById(R.id.img);
                    viewHold.button = (Button) convertView.findViewById(R.id.btn_del);
                    convertView.setTag(viewHold);
                } else {
                    viewHold = (ViewHold) convertView.getTag();
                }
                viewHold.iDrawable.setImageResource((Integer) list.get(position).get("id"));
                viewHold.strName.setText(list.get(position).get("person").toString());
                viewHold.button.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        list.remove(position);
                        myAdapter.notifyDataSetChanged();
                    }
                });
                convertView.setOnTouchListener(new View.OnTouchListener() {
                    @Override
                    public boolean onTouch(View v, MotionEvent event) {
                        switch (event.getAction()) {
                            case MotionEvent.ACTION_UP:
                                fSecx = event.getX();
                                if ((fSecx - fFirstx) > 10) {
                                    ViewHold viewHold = (ViewHold) v.getTag();
                                    viewHold.button.setVisibility(Button.VISIBLE);
                                    viewHold.button.setOnClickListener(new View.OnClickListener() {
                                        @Override
                                        public void onClick(View v) {
                                            list.remove(position);
                                            myAdapter.notifyDataSetChanged();
                                        }
                                    });
                                }
                                break;
                            case MotionEvent.ACTION_DOWN:
                                fFirstx = event.getX();
                                break;
                            case MotionEvent.ACTION_MOVE:
                                break;
                        }
                        return true;
                    }
                });
                return convertView;
            }
    
            class ViewHold {
                private TextView strName;
                private ImageView iDrawable;
                private Button button;
            }
    
            @Override
            public Object getItem(int position) {
                return null;
            }
    
            @Override
            public long getItemId(int position) {
                return 0;
            }
        }
    }

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.shaoxin.mylistadapter.MainActivity">
    
        <ListView
            android:id="@android:id/list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>

    listview_item.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <ImageView
            android:id="@+id/img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:maxHeight="100dp"
            android:maxWidth="100dp"
            android:src="@mipmap/ic_launcher" />
    
        <TextView
            android:id="@+id/txt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/img"
            android:layout_toEndOf="@+id/img"
            android:layout_toRightOf="@+id/img"
            android:text="hello world" />
    
        <Button
            android:id="@+id/btn_del"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="删除"
            android:layout_alignBaseline="@+id/txt"
            android:visibility="gone"
            android:layout_alignBottom="@+id/txt"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />
    </RelativeLayout>
  • 相关阅读:
    找回Android studio的帮助文档
    adb shell 命令详解
    Android 获取Activity当前view
    下载网络文件HttpURLConnection.getContentLength()大小为 0
    Android设置屏幕旋转后保存数据
    解决TextView drawableRight左侧图片大小不可控的问题
    Android全屏(包含3种隐藏顶部状态栏及标题栏和一种隐藏Android 4.0平板底部状态栏的方法)
    人生苦短,我用Python(目录)
    爬虫学习目录
    Django-jet自定义菜单
  • 原文地址:https://www.cnblogs.com/ShaoXin/p/6171818.html
Copyright © 2011-2022 走看看