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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • android线程通信的几种方式_java多线程的实现方式

    android线程通信的几种方式_java多线程的实现方式1,通过Handler机制.privatevoidone(){handler=newHandler(){@OverridepublicvoidhandleMessage(Messagemsg){super.handleMessage(msg);

    2022年10月7日
    5
  • Qt/C++ 音乐播放器源码[通俗易懂]

    Qt/C++ 音乐播放器源码[通俗易懂]Qt5音乐播放器这是本人的第一条博客,排版什么的就将就看吧~一,我还在学生,学Qt来收获很大,至少是明白了Qt这些大大小小的问题1.播放器做的很累人,网上虽有源码,但都过分的简单且不美观。2.基于上述原因我才打算重新写个玩玩,以后在写程序的时候听着自己做的播放器放的歌,那是相当的苦中带乐啊!!二,好了下面讲如何实现吧1.先上几张最终效果图:换肤:…

    2022年5月22日
    58
  • Ubuntu安装GCC 3.4

    Ubuntu安装GCC 3.4Ubuntu安装GCC3.4一、背景二、安装三、总结一、背景因最近学习hit-os编译linux0.11版本内核,需要使用到gcc3.4,故此记录。二、安装#下载deb包wgethttp://old-releases.ubuntu.com/ubuntu/pool/universe/g/gcc-3.4/cpp-3.4_3.4.6-6ubuntu3_amd64.debwgethttp://old-releases.ubuntu.com/ubuntu/pool/universe/g/gc

    2022年7月24日
    10
  • 各种数据流图实例「建议收藏」

    转载自:https://blog.csdn.net/thisispan/article/details/75723311.某公司的营销系统2.学校的图书管理系统34.

    2022年4月13日
    38
  • MySql索引类型

    MySql索引类型Mysql支持哪几种索引索引是在MySql的存储引擎层中实现的,而不是在服务器层从数据结构角度1、B+树索引(O(log(n))):关于B+树索引,可以参考 MySQL索引背后的数据结构及算法原理BTREE在MyISAM里的形式和Innodb稍有不同在Innodb里,有两种形态:一是primarykey形态,其leafnode里存放的是数据,而且不仅存放了索引键的数据,还存放了其他字段的数据…

    2022年6月12日
    34
  • 网络请求发生错误: Unsupported Media Type

    网络请求发生错误: Unsupported Media Type环信获取token时,请求失败UnsupportedMediaTypexutls发送json数据

    2022年5月15日
    40

发表回复

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

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