android 点击页面每行,跳转到另一个页面_umbrella_419的博客-程序员宅基地

实现思路:

1、获取id

2、获取数据

3、给id设置适配器(Adapter)

4、给id设置点击事件,循环1-1000

5、自定义适配器(内存溢出)
(1)把布局文件转成view
    
(2)设值

(3)给按钮设置点击事件



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.zking.y2_android0609_widgetplus2.MainActivity">

<ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/lv_main_list"
    ></ListView>
</LinearLayout>


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:descendantFocusability="blocksDescendants"
    android:layout_height="match_parent">
<ImageView
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:id="@+id/iv_item_icon"
    android:src="@drawable/default_ptr_flip"
    />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/tv_item_title"
        android:text="XX"
        android:textSize="30sp"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="下载"
        android:id="@+id/btn_item_download"
        />
</LinearLayout>

public class ItemTag {
    public ImageView imageView;
    public TextView textView;
    public Button button;
}


package com.zking.y2_android0609_widgetplus2;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ListView listView;
    private int[] images=new int[]{R.drawable.bird,R.drawable.cat,R.drawable.elephant,R.drawable.chicken};
    private String[] titles= new String[]{"李思佳","刘再融","唐嫣","刘恺威"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView) findViewById(R.id.lv_main_list);
        //获取数据


        //实例化SimpleAdapter
        listView.setAdapter(new MyAdapter());

        //给ListView设置点击事件  //i%titles.length为了要循环数据0-9下标1-10000
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Toast.makeText(MainActivity.this, "跳转到"+titles[i%titles.length]+"页面",Toast.LENGTH_SHORT).show();
            }
        });
    }

    //OOM OutOfMemory 内存溢出
    class MyAdapter extends BaseAdapter{
        @Override
        public int getCount() {
            return 10000;  //多少条数据
        }

        @Override
        public Object getItem(int i) {
            return titles[i%titles.length]; //titles[i]代表获得titles里面每个值
        }

        @Override
        public long getItemId(int i) {  //下标
            return i;
        }

        @Override
        public View getView(final int i, View view, ViewGroup viewGroup) {

            Log.i("test","i="+i+" "+view);
            //把布局文件转成View
            if(view==null){  //同一时间最多能看到14条数据,有14个null
                view= getLayoutInflater().inflate(R.layout.item_listview,null);
                ItemTag itemTag=new ItemTag();
                itemTag.imageView= (ImageView) view.findViewById
                        (R.id.iv_item_icon);
                itemTag.textView= (TextView) view.findViewById
                        (R.id.tv_item_title);
                itemTag.button= (Button) view.findViewById
                        (R.id.btn_item_download);
                view.setTag(itemTag);
            }
            ItemTag itemtag= (ItemTag) view.getTag();
            //设值
            itemtag.imageView.setImageResource(images[i%titles.length]);
            itemtag.textView.setText(titles[i%titles.length]+i);

            //给按钮设置点击事件
            itemtag.button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(MainActivity.this, "正在下载"+titles[i%titles.length],
                            Toast.LENGTH_SHORT).show();
                }
            });
            return view;
        }
    }
}


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/umbrella_419/article/details/73076245

智能推荐

aioreis 之 BaseRedis_dingfei8574的博客-程序员宅基地

#!/usr/bin/env python# -*- coding:utf-8 -*-from aioredis import create_redis_poolimport datetimeimport time as mod_timefrom redis.exceptions import ( ConnectionError, DataErro...

使用TKPROF查看跟踪文件_cuanzhutang8944的博客-程序员宅基地

tkprof是安装数据自带的查看跟踪文件的命令工具,其将跟踪文件xx.trc转化为易于阅读的xx.prf文件,其在创建跟踪文件的同时也可以运行tkprof程序。TKPROF语法格式:tkprof t...

faulting module msctfime.ime 纠结的微软拼音输入法_demonstration的博客-程序员宅基地_msctfime ui

<br />前几天偶然打开windows live message 发现一敲键盘程序就崩溃死掉,MSN也是一样,大为不爽,好在本人对于他们也不常用,就没在意。<br /> <br />今天开QQ居然发现了同样的问题,在聊天窗口一敲键盘QQ就崩溃了,+_+连QQ也不让上了。更怪的是打开Word2007也是一样,一敲键盘就异常关闭了(PPT居然没事,微软的东西真垃圾,这么不可靠)。<br /> <br />中毒了?中木马了?不会吧,一直在更新漏洞,补丁也打得好好的。用ESS扫了1个小时没什么发现,360查了半天

tomcat优化参数_diaonihe9107的博客-程序员宅基地

JAVA_OPTS="-Xmx4000M-Xms4000M-Xmn600M-XX:PermSize=500M-XX:MaxPermSize=500M-Xss256K-XX:+DisableExplicitGC-XX:SurvivorRatio=1-XX:+UseConcMarkSweepGC-XX:+UseParNewGC-XX:+CMSParallelRemark...

【收藏吧,真的很有用的大数据面试专题】面试了8家,每次都会被面到这几道Flink面试题_大数据研习社的博客-程序员宅基地

持续分享有用、有价值、精选的优质大数据面试题致力于打造全网最全的大数据面试专题题库

牛客练习赛31_difubin1811的博客-程序员宅基地

A题(搜索)#include&lt;cstdio&gt;#include&lt;iostream&gt;#include&lt;cstring&gt;#include&lt;string&gt;#include&lt;map&gt;#include&lt;set&gt;#include&lt;vector&gt;#include&...

随便推点

史上最糟糕的两个变量名_weixin_34162629的博客-程序员宅基地

作为一个程序员,“起名字”是他们工作中非常重要的一部分。Phil Karlton就说过:“在计算机科学领域,有两大难题,如何验证缓存和如何给各种东西命名。”虽然很难,但是每次在写代码的时候,给事物起名字又是不可 回避的工作。无论是程序变量名还是数据库表名或者是表里的列名,甚至是文件系统中的文件名,以及你的项目名称、产品名称,给这些东西起名字可不是...

WordPress自定义帖子类型辩论– Functions.php还是插件?_cumohuo9136的博客-程序员宅基地

As many of you know, this past week Syed Balkhi attended WordCamp Raleigh 2012. During the event, one of his tweets sparked quite a debate. In this article, our founder Syed Balkhi will debate whether...

闰年or平年判断_diaolianxian9049的博客-程序员宅基地

&lt;script type="text/javascript"&gt;var year = prompt("请输入一个年份");if(year!=null){ var b = isNaN(year) if(b==false) { if(year&gt;0&amp;&amp;year&lt;=9999&amp;&amp;year%1==0)//判断年份范围,并且规定是整数 { ...

解决:Loading kernel module CAP_SYS_MODULE CAP_NET_ADMIN alias netdev-eth0 instead_普通网友的博客-程序员宅基地

克隆虚拟机、启动、配置网络、重启网络服务遇到如下问题:[[email protected] ~]# service network restartLoading kernel module for a network device with CAP_SYS_MODULE (deprecated). Use CAP_NET_ADMIN and alias netdev-eth0 ...

在CentOS 7上给一个网卡分配多个IP地址_weixin_34146410的博客-程序员宅基地

有时,你也许想要给一个网卡多个地址。你该怎么做呢?另外买一个网卡来分配地址?在小型网络中其实不用这么做。我们现在可以在CentOS/RHEL 7中给一个网卡分配多个IP地址。想知道怎么做么?好的,跟随我,这并不难。首先,让我们找到网卡的IP地址。在我的CentOS 7服务器中,我只使用了一个网卡。用root特权运行下面的命令:ipaddr示例输出:1:lo:&lt;LO...

L1-024 后天 (5 分)_黑色吊椅的博客-程序员宅基地

如果今天是星期三,后天就是星期五;如果今天是星期六,后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天,请你输出那天的“后天”是星期几。输入格式:输入第一行给出一个正整数D(1 ≤ D ≤ 7),代表星期里的某一天。输出格式:在一行中输出D天的后天是星期几。输入样例:3输出样例:5作者: 陈越单位: 浙江大学时间限制: 400 ms...