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


相关推荐

  • MFC之进度条CProgressCtrl

    MFC之进度条CProgressCtrl一、成员函数简介1、create()针对不是通过资源文件上拖拉进度条控件生成的进度条,需要用此函数创建一个。2、SetRange()设置进度条的起始值和终止值。3、SetPos()设置进度条的当前位

    2022年7月2日
    29
  • 软件测试 因果图_软件测试因果图

    软件测试 因果图_软件测试因果图因果图是一种形式语言,用自然语言描述的规格说明可以转化为因果图。因果图实际上是一种数字逻辑电路(一个组合的逻辑网络),但没有使用标准的电子学符号,而是使用了稍微简单点的符号,它有助于用一个系统的方法选择出高效的测试用例集,它还有一个额外的好处就是可以指出规格说明的不完整和不明确之处。 生成测试用例采用的过程:将规格说明分解为可执行的片段。这是必须的步骤,因为因果图不善于处理较大的规格说明。 …

    2022年8月14日
    6
  • 通俗、有逻辑的写一篇说下Xgboost的原理,供讨论参考

    通俗、有逻辑的写一篇说下Xgboost的原理,供讨论参考初看Xgboost,翻了多篇博客发现关于xgboost原理的描述实在难以忍受,缺乏逻辑性,写一篇供讨论。——以下是抛砖引玉。观其大略,而后深入细节,一开始扎进公式反正我是觉得效率不高,还容易打消人的积极性。首先说下决策树决策树是啥?举个例子,有一堆人,我让你分出男女,你依靠头发长短将人群分为两拨,长发的为“女”,短发为“男”,你是不是依靠一个指标“头发长短”将人群进行了划分,你就形成了一个

    2022年5月7日
    45
  • Android 屏幕适配之框架(AndroidAutoSize)(今日头条)适配

    Android 屏幕适配之框架(AndroidAutoSize)(今日头条)适配AndroidAutoSize框架 1.链接https://github.com/JessYanCoding/AndroidAutoSize 2.使用 2.1.添加Gradle配置implementation’me.jessyan:autosize:1.1.2′  2.2.添加AndroidManifest配置&lt;manifest&gt;…

    2022年6月4日
    46
  • 解决touchStart滑动时触发点击事件「建议收藏」

    解决touchStart滑动时触发点击事件「建议收藏」由于我们在将点击事件委托到div,span,font,p等元素标签上时会导致移动端的ios设备无法识别这个点击事件(一般指click事件),此时我们一般会使用touchstart来替换click事件,但是使用touchstart来代替click事件的弊端就立刻显示出来,每当我们滑动屏幕时就会立刻出发点击事件此时加入我这个封装的方法,这个弊端就会迎刃而解functiontap(el,fn…

    2022年6月19日
    27
  • iMX8MPlus和iMX8QM机器学习框架eIQ性能对比

    iMX8MPlus和iMX8QM机器学习框架eIQ性能对比ByToradex胡珊逢机器学习算法对算力要求较高,通常会采用GPU,或者专用的处理器如NPU进行加速运算。NXP先后推出的两款处理器iMX8QuadMax和iMX8MPlus分别可以采用GPU和NPU对常用的机器学习算法例如TensorFlowLite等进行加速。文章将使用NXPeIQ框架在两个处理器上测试不同算法的性能。这里我们将使用Toradex的ApalisiMX8QM4GBWBITV1.1C和VerdiniMX8MPl…

    2022年10月19日
    2

发表回复

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

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