zoukankan      html  css  js  c++  java
  • 了解Android_08之ListView(列表视图)

    一、ListView(列表视图)是一种什么样的效果?

      ListView(列表视图)可以将自定义的布局根据一定数量显示在屏幕上。

      比如:

      

     其中:一张图片和文字就是自定义的布局样式:

    <?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"
    >
        <ImageView
            android:id="@+id/iv1"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="#000"
            android:scaleType="centerCrop"
        />
        <TextView
            android:id="@+id/tv1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="测试文字"
            android:textSize="24sp"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="40dp"
        />
    </LinearLayout>

    二、ListView如何展示样式?

    <ListView
        android:id="@+id/lv1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:listSelector="@drawable/listview"
    />

    其中:listSelector是自定义的一个按压效果:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_selected="true" android:drawable="@color/colorRed"/>
        <item android:state_pressed="true" android:drawable="@color/colorRed"/>
        <item android:state_focused="true" android:drawable="@color/colorRed"/>
    </selector>

    ListView主要还是通过Java代码来控制:

    package com.example.listviewdemo;
    
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.*;
    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    import com.bumptech.glide.Glide;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ListView lv1 = findViewById(R.id.lv1);
            lv1.setAdapter(new MyListViewAdapter(this)); //将自定义适配器作为参数传入
            lv1.setOnItemClickListener(new AdapterView.OnItemClickListener(){ //单机事件
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                    System.out.println("item:"+i+" 单击 "+l);
                }
            });
            lv1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { //长按事件
                @Override
                public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
                    System.out.println("item:"+i+"长按 "+l);
                    return true; //true为长按后阻止其它事件发生
                }
            });
        }
        private class MyListViewAdapter extends BaseAdapter{ //继承一个基本的适配器(BaseAdapter)
            private Context mLVAContext; //上下文
            private LayoutInflater mLVALayoutInflater; //布局服务用于从上下文(context)中获取View视图
            public MyListViewAdapter(Context context){
                this.mLVAContext = context; //获取上下文
                this.mLVALayoutInflater = LayoutInflater.from(context); //从上下文中获取布局服务,将来可以获取View视图
            }
            @Override
            public int getCount() { //将自定义的布局显示6次
                return 6;
            }
    
            @Override
            public Object getItem(int i) {
                return null;
            }
    
            @Override
            public long getItemId(int i) {
                return 0;
            }
    
            @Override
            public View getView(int i, View view, ViewGroup viewGroup) {
                view = mLVALayoutInflater.inflate(R.layout.listview_item,null); //获取自定义布局listview_item的视图
                ImageView iv1 = view.findViewById(R.id.iv1); //获取自定义布局listview_item中的组件
                TextView tv1 = view.findViewById(R.id.tv1);  //获取自定义布局listview_item中的组件
                tv1.setText("被设置后的文本效果"); //设置组件内容
                //设置图片地址
                Glide.with(this.mLVAContext).load("https://t7.baidu.com/it/u=3616242789,1098670747&fm=79&app=86&size=h300&n=0&g=4n&f=jpeg?sec=1604332215&t=cb2b5ed8ce723d4117196f3ee207a001").into(iv1);
                return view;
            }
        }
    }

    三、最后实现效果:

  • 相关阅读:
    web页面前图标
    leetcode收获
    Shell统计函数耗时(实现数字运算)
    Shell判断数值是否存在于列表
    设置Ubuntu虚拟机硬件时间与系统同步
    Python捕获键盘中断^C方法(Ctrl-C)
    Shell创建zip文件不包含完整路径方法
    jquery判断复选框checkbox是否被选中
    php Base64编码/解码
    php二维数组排序
  • 原文地址:https://www.cnblogs.com/wmskywm/p/13889409.html
Copyright © 2011-2022 走看看