zoukankan      html  css  js  c++  java
  • 3.17学习总结.listview用法总结

      今天复习了listview控件的用法。

    1.activity_main.xml 中的代码,如下:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingTop="10dp"
        android:paddingLeft="10dp"
        tools:context=".MainActivity">
    
        <ListView
            android:id="@+id/lv_1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"/>
    
    </LinearLayout>

    2. 接下来修改 MainActivity 中的代码,如下:

    public class MainActivity extends AppCompatActivity {
        private ListView mlist;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mlist=(ListView)findViewById(R.id.lv_1);
            mlist.setAdapter(new adapter(MainActivity.this));
        }
    }

    3.adapter代码

    (我的理解adapter相当于一个中转站,在被调用的时候将接收到的东西依次送到调用方)

    public class adapter extends BaseAdapter {
    
        private Context mContext;
        private LayoutInflater mLayoutInflater;
        public adapter(Context context){
            this.mContext=context;
            mLayoutInflater=LayoutInflater.from(context);
        }
        @Override
        public int getCount() {
            return 10;
        }
    
        @Override
        public Object getItem(int position) {
            return null;
        }
    
        @Override
        public long getItemId(int position) {
            return 0;
        }
    
         class ViewHolder{
            public TextView tv_1;
            public TextView tv_2;
            public TextView tv_3;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder=null;
            if (convertView==null){
                convertView=mLayoutInflater.inflate(R.layout.list_item,null);
                holder=new ViewHolder();
                holder.tv_1=convertView.findViewById(R.id.tv_name);
                holder.tv_2=convertView.findViewById(R.id.tv_temp);
                holder.tv_3=convertView.findViewById(R.id.tv_place);
    
                convertView.setTag(holder);
            }else{
                holder= (ViewHolder) convertView.getTag();
            }
            //给控件赋值
            holder.tv_1.setText("姓名"+"小明");
            holder.tv_2.setText("体温"+"36.2");
            holder.tv_3.setText("地址"+"中国");
    
            return convertView;
        }
    }

    数组中的数据实是无法直接传递给 ListView 的,我们还需要借助适配器来完成。 Android中提供了很多适配器的实现类,此处用 ArrayAdapter适配器。它可以通过泛型来指定要适配的数据类型,然后在构造函数中把要适配的数据传入。ArrayAdapter 有多个构造函数的重载,根据实际情况来选择合适的一种。

    这里我们提供的数据都是字符串,因此将ArrayAdapter 的泛型指定为 String,然后在 ArrayAdapter 的构造函数中依次 传入 上下文、ListView 子项布局的 id,以及要适配的数据。注意:我们使用了 android.R.layout.list_item作为 ListView 子项布局的 id,这是一个Android 内置的布局文件,里面只有一个 TextView ,可用于简单地显示一段文本。这样适配器就构建好了。

    最后调用 ListView 的 setAdapter() 方法,将构建好的适配器对象传递进去,这样ListView 和数据之间的关联就建立好了。
    list_item代码:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv_name"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="15dp"
            android:layout_weight="1"
            android:text="姓名:" />
    
        <TextView
            android:id="@+id/tv_temp"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="体温" />
        <TextView
            android:id="@+id/tv_place"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="所在地" />
    </LinearLayout>
  • 相关阅读:
    鼠标放大镜案例代码
    鼠标点击跟随,鼠标点击哪里,图片跟随到哪里;
    筋斗云效果(云朵在导航栏内随着鼠标移动)
    HDU5003:Osu!(签到题)HDU5038:(签到题,题意很坑)
    SDUT3146:Integer division 2(整数划分区间dp)
    SDUT3145:Integer division 1(换零钱背包)
    SDUT3143:Combinatorial mathematics(组合数学)
    SDUT3141:Count(哈希)好题
    SDUT1574:组合数的计算
    SDUT1607:Number Sequence(矩阵快速幂)
  • 原文地址:https://www.cnblogs.com/1305536110-dym/p/14552790.html
Copyright © 2011-2022 走看看