• Android : ListView + BaseAdapter-简单应用


     ​​容器与适配器:​​​​​        http://t.csdnimg.cn/ZfAJ7

    示例图:

    实体类 News.java

    1. package com.example.mylistviewbaseadapter.entity;
    2. public class News {
    3. private String title;
    4. private String content;
    5. private int img;
    6. public News(String title,String content, int img){
    7. this.title = title;
    8. this.content = content;
    9. this.img =img;
    10. }
    11. public String getTitile() {
    12. return title;
    13. }
    14. public void setTitile(String title) {
    15. this.title = title;
    16. }
    17. public String getContent() {
    18. return content;
    19. }
    20. public void setContent(String content) {
    21. this.content = content;
    22. }
    23. public int getImg() {
    24. return img;
    25. }
    26. public void setImg(int img) {
    27. this.img = img;
    28. }
    29. }

    适配器 写个类继承BaseAdapter 

    1. package com.example.mylistviewbaseadapter;
    2. import android.content.Context;
    3. import android.view.LayoutInflater;
    4. import android.view.View;
    5. import android.view.ViewGroup;
    6. import android.widget.BaseAdapter;
    7. import android.widget.ImageView;
    8. import android.widget.TextView;
    9. import com.example.mylistviewbaseadapter.entity.News;
    10. import java.util.List;
    11. public class NewsAdpater extends BaseAdapter {
    12. private List date;
    13. private Context context;
    14. //構造器
    15. public NewsAdpater(List date,Context context){
    16. this.date = date;
    17. this.context = context;
    18. }
    19. //BaseAdapter最基本的几个方法:
    20. // 1. getCount 填充的数据集数
    21. // 2.getItem 数据集中指定索引对应的数据项
    22. // 3. getItemId 指定行所对应的ID
    23. // 4. getView 每个Item所显示的类容
    24. @Override
    25. public int getCount() {
    26. //充的数据集数
    27. return date.size();
    28. }
    29. @Override
    30. public Object getItem(int position) {
    31. //数据集中指定索引对应的数据项
    32. return date.get(position);
    33. }
    34. @Override
    35. public long getItemId(int position) {
    36. // 指定行所对应的ID
    37. return position;
    38. }
    39. @Override
    40. public View getView(int position, View convertView, ViewGroup parent) {
    41. //每个Item所显示的类容
    42. convertView = LayoutInflater.from(context).inflate(R.layout.list_test,parent,false);
    43. ImageView imageView = convertView.findViewById(R.id.btnImg);
    44. TextView tvTitle = convertView.findViewById(R.id.tvH);
    45. TextView tbCont = convertView.findViewById(R.id.tvCont);
    46. //摄入值
    47. imageView.setBackgroundResource(date.get(position).getImg());
    48. tvTitle.setText(date.get(position).getTitile());
    49. tbCont.setText(date.get(position).getContent());
    50. return convertView;
    51. }
    52. /**
    53. //优化
    54. @Override
    55. public View getView(int position, View convertView, ViewGroup parent) {
    56. ViewHoler holer = null;
    57. if(holer == null){
    58. holer = new ViewHoler();
    59. //每个Item所显示的类容
    60. convertView = LayoutInflater.from(context).inflate(R.layout.list_test,parent,false);
    61. holer.imageView = convertView.findViewById(R.id.btnImg);
    62. holer.tvTitle = convertView.findViewById(R.id.tvH);
    63. holer.tbCont = convertView.findViewById(R.id.tvCont);
    64. convertView.setTag(holer);
    65. }else{
    66. holer = (ViewHoler)convertView.getTag();
    67. }
    68. //摄入值
    69. holer.imageView.setBackgroundResource(date.get(position).getImg());
    70. holer.tvTitle.setText(date.get(position).getTitile());
    71. holer.tbCont.setText(date.get(position).getContent());
    72. return convertView;
    73. }
    74. static class ViewHoler{
    75. ImageView imageView;
    76. TextView tvTitle;
    77. TextView tbCont;
    78. }
    79. */
    80. }

    MainActivity.java

    1. package com.example.mylistviewbaseadapter;
    2. import static android.widget.Toast.LENGTH_SHORT;
    3. import androidx.appcompat.app.AppCompatActivity;
    4. import android.content.Context;
    5. import android.os.Bundle;
    6. import android.view.View;
    7. import android.widget.AdapterView;
    8. import android.widget.ListView;
    9. import android.widget.Toast;
    10. import com.example.mylistviewbaseadapter.entity.News;
    11. import java.util.ArrayList;
    12. import java.util.LinkedList;
    13. import java.util.List;
    14. public class MainActivity extends AppCompatActivity{
    15. private ListView listView;
    16. private Context context;
    17. private List listNews =null;
    18. //适配器
    19. private NewsAdpater newsAdpater=null;
    20. @Override
    21. protected void onCreate(Bundle savedInstanceState) {
    22. super.onCreate(savedInstanceState);
    23. setContentView(R.layout.activity_main);
    24. context = this;
    25. listView = findViewById(R.id.listVi);
    26. listNews = new ArrayList<>();
    27. //传入内容
    28. for(int i= 0 ; i < 10; i++){
    29. listNews.add(new News("这是标题"+i,"我是内容我是内容我是内容我是内容我是内容我是内容我是内容"+i,R.mipmap.bg));
    30. }
    31. newsAdpater = new NewsAdpater(listNews,context);
    32. //事件
    33. listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    34. @Override
    35. public void onItemClick(AdapterView parent, View view, int position, long id) {
    36. Toast.makeText(context, "点击了第" + position + "条数据", LENGTH_SHORT).show();
    37. }
    38. });
    39. //往容器设置适配器
    40. listView.setAdapter(newsAdpater);
    41. }
    42. }

    activity_main.xml

    1. "1.0" encoding="utf-8"?>
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. xmlns:app="http://schemas.android.com/apk/res-auto"
    4. xmlns:tools="http://schemas.android.com/tools"
    5. android:layout_width="match_parent"
    6. android:layout_height="match_parent"
    7. android:orientation="vertical"
    8. tools:context=".MainActivity">
    9. <ListView
    10. android:id="@+id/listVi"
    11. android:layout_width="match_parent"
    12. android:layout_height="wrap_content"/>
    13. LinearLayout>

    list_test.xml

    1. "1.0" encoding="utf-8"?>
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. android:layout_width="match_parent"
    4. android:descendantFocusability="blocksDescendants"
    5. android:layout_height="match_parent">
    6. <ImageView
    7. android:id="@+id/btnImg"
    8. android:layout_width="200dp"
    9. android:layout_height="100dp"
    10. android:scaleType="fitXY"
    11. android:src="@mipmap/bg"
    12. />
    13. <LinearLayout
    14. android:orientation="vertical"
    15. android:layout_width="match_parent"
    16. android:layout_height="wrap_content">
    17. <TextView
    18. android:id="@+id/tvH"
    19. android:layout_width="match_parent"
    20. android:layout_height="wrap_content"
    21. android:text="我是标题"
    22. android:gravity="center"
    23. android:textSize="16sp"
    24. android:textStyle="bold"
    25. />
    26. <ScrollView
    27. android:layout_width="match_parent"
    28. android:layout_height="wrap_content">
    29. <TextView
    30. android:id="@+id/tvCont"
    31. android:layout_marginTop="10px"
    32. android:layout_width="match_parent"
    33. android:layout_height="wrap_content"
    34. android:text="我是内容文本asdfasdfasdfasdfasdfasdfs"
    35. android:textSize="12sp"
    36. android:textStyle=""
    37. />
    38. ScrollView>
    39. LinearLayout>
    40. LinearLayout>

  • 相关阅读:
    解决 mybatis mapper配置文件与接口名称必须一致问题
    点云从入门到精通技术详解100篇-基于路侧激光雷达的交通目标感知方法与实现(中)
    这里有一个源码调试方法,短小精悍,简单粗暴,但足够好用。
    arcgis实现矢量数据的局部裁剪
    Win10如何删除登录账号?Win10删除登录账号的方法
    一套方便实用的分页设计方案 Bootstrap5 + Thymeleaf
    【场景化解决方案】销帮帮酷应用,帮助企业销售团队实现精细化管理
    串口隔离内外网的通信协议设计
    Linux内核中ideapad-laptop.c文件全解析5
    Matlab中error函数的使用
  • 原文地址:https://blog.csdn.net/jiayou2020527/article/details/134534317