Android listview使用[通俗易懂]

Android listview使用[通俗易懂]安卓listview使用MainActivitypublicclassMainActivityextendsAppCompatActivity{privateListViewlistView;privateMyAdapteradapter;privateList<Person>list;@Overridepro…

大家好,又见面了,我是你们的朋友全栈君。

安卓listview使用

MainActivity

public class MainActivity extends AppCompatActivity { 
   
    private ListView listView;
    private MyAdapter adapter;
    private List<Person> list;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView=findViewById(R.id.listview);
        //给集合赋值
        getData();
        //初始化adapter
        adapter  = new MyAdapter(this,list);
        //给listview设置适配器
        listView.setAdapter(adapter);
        //listview的item点击监听
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
   
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
   
                Person person = list.get(position);
                Toast.makeText(MainActivity.this,person.mContent,Toast.LENGTH_SHORT).show();
            }
        });
    }

	//手动给集合赋值数据
    private List<Person> getData(){ 
   
        list = new ArrayList<Person>();
        for(int i=1;i<=10;i++){ 
   
         Person p = new Person(R.drawable.ic_launcher,i+"","第"+i);
         list.add(p);
        }
        return list;
    }
}

MyAdapter

public class MyAdapter extends BaseAdapter { 
   
    private Context context;
    private List<Person> list;

	//构造函数,给集合赋值
    public MyAdapter(Context context,List<Person> list){ 
   
        this.context=context;
        this.list=list;
    }

    private class ViewHolder{ 
   
        ImageView imageView;
        TextView title;
        TextView content;
    }

    @Override
    public int getCount() { 
   
    	//listview中显示的个数
        return list.size();
    }

    @Override
    public Object getItem(int position) { 
   
        return list.get(position);
    }

    @Override
    public long getItemId(int position) { 
   
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) { 
   
        ViewHolder viewHolder;
        //判断界面是否有缓存
        if(convertView==null){ 
   
            viewHolder= new ViewHolder();
            //初始化item的控件
            convertView= LinearLayout.inflate(parent.getContext(), R.layout.item, null);
            viewHolder.imageView=convertView.findViewById(R.id.imageview);
            viewHolder.title=convertView.findViewById(R.id.title);
            viewHolder.content=convertView.findViewById(R.id.content);
            convertView.setTag(viewHolder);
        }else{ 
   
            viewHolder=(ViewHolder)convertView.getTag();
        }
        //给item控件赋值
        Person person = list.get(position);
        viewHolder.imageView.setBackgroundResource(person.mPicture);
        viewHolder.title.setText(person.mTitle);
        viewHolder.content.setText(person.mContent);

        return convertView;
    }

}

activity_main

<?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"
    tools:context=".MainActivity"
    android:orientation="vertical">

    <!--divider属性设置item间距-->
    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:dividerHeight="10dp"></ListView>

</LinearLayout>

效果图
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160577.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • IDEA激活成功教程后一直提示JetbrainsAgent 相关的弹框问题

    IDEA激活成功教程后一直提示JetbrainsAgent 相关的弹框问题激活成功教程后打开IDEA就弹框,关闭之后会自动打开浏览器,隔一会也会弹出来 也是一样的问题一开始是说把txt 和 jar 文件放一个路径下之类的方法,几经波折,发现没任何用处~最后各种搜索排查,在设置下更改配置就不弹啦~settings设置下搜索agent 取消”Instrumenting agent(requires debugger restart)”在 Reload classes after compilation:选择第一个 Always…

    2022年8月19日
    9
  • svn设置中文_maven配置

    svn设置中文_maven配置一、前言SVN作为很常见的版本开发工具,安装的时候默认为英文,不过SVN官网支持多种语言的语言包,配置起来也很简单。二、现在中文简体语言包1)官网下载中文简体包官网下载地址传送门2)选择好对应位数,点击setup下载即可我下载好的放在了百度网盘里了链接:https://pan.baidu.com/s/1bVnTX15pBHAGSU8jQS5RjQ提取码:i8tt3)安装将下…

    2022年9月12日
    1
  • 关于Android多按钮切换的例子!

    关于Android多按钮切换的例子!

    2022年3月12日
    42
  • C语言读写文件

    C语言读写文件一:打开文件句柄//参数1:文件路径//参数2:文件打开模式函数执行成功返回文件流指针,错误返回NULL。FILE*fopen(constchar*path,constchar*mode);模式操作区别文件要求r读…

    2022年6月2日
    42
  • ue4封装接口_ue4导出模型

    ue4封装接口_ue4导出模型原创文章,转载请注明出处。本文带大家认识UE4插件/模块的使用方式Dll。既然为DLL,那么我们就可以对其封装,做到不公开cpp的目的。1>新建一个Plugin2>在plugin中创建一个Actor类,并在里面写一个UE4的Log输出函数。3>对其进行编译,编译出不同模式的dll出来4>在UE4场景中测试我们Log函数5>删除cpp文件6>在我们的.build.cs中添加不参数编译的参数bUsePrecompiled=true;7>再到UE4场景中测试我们L

    2022年9月1日
    4
  • arm的一些概念(ARM9、Cortex的区别)

    arm的一些概念(ARM9、Cortex的区别)arm的一些概念(ARM7、Cortex-M的区别)ARM7:ARMv4架构,ARM9:ARMv5架构,ARM11:ARMv6架构,ARM-Cortex系列:ARMv7架构。  ARM7没有MMU(内存管理单元),只能叫做MCU(微控制器),不能运行诸如Linux、WinCE等这些现代的多用户多进程操作系统,因为运行这些系统需要MMU,才能给每个用户进程分配进程自己独立的地址空间。uc…

    2022年5月30日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号