Android studio之Lisview 点击、长按、背景

本文介绍了在Android Studio中如何实现ListView的点击、长按事件及自定义背景。通过创建selector.xml文件来定义不同状态的背景,并在MainActivity.java和listview.xml中应用这些设置。此外,还提供了在color.xml中定义颜色选择器的方法,以改变点击前后背景的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提代码:

点击此处跳转

一、点击、长按:
在这里插入图片描述
在这里插入图片描述
二、背景:
第一步:在drawable下面建立一个新.xml文件:
第二步:
在新建文件编写代码:
在这里插入图片描述
第三步:
再需要的地方加此句代码:android:background="@drawable/selector"

到此结束,代码在原来基础上更改
MainActivity.java 代码改为:

package com.example.listview;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener, AdapterView.OnItemLongClickListener {
    private int[] imageID={R.drawable.apple,R.drawable.banana,R.drawable.blueberry,R.drawable.lemon,
            R.drawable.pear,R.drawable.pineapple,R.drawable.watermelon};
    private String[] textID={"苹果","香蕉","蓝莓","柠檬","香梨","菠萝","西瓜"};
    private String[] contextID={"苹果好吃","香蕉好吃","蓝莓好吃","柠檬好吃","香梨好吃","菠萝好吃","西瓜好吃"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView listview=(ListView)findViewById(R.id.ListView1);
        //创建一个List集合,List集合的元素是map
        List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
        {
            //利用循环将键和值一一对应放入map集合内。
            for (int i = 0; i < imageID.length; i++) {
                //下面一句放在循环外和里面不一样
                Map<String, Object> map = new HashMap<String, Object>();
                map.put("image", imageID[i]);
                map.put("text", textID[i]);
                map.put("context", contextID[i]);
                //将map值存进list
                list.add(map);
            }
        }
        //准备适配器
        MyAdapter adapter=new MyAdapter(this);
        adapter.setList(list);
        //将适配器与ListView关联
        listview.setAdapter(adapter);
        //ListView点击和长按响应
        listview.setOnItemClickListener(this);
        listview.setOnItemLongClickListener(this);
    }
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(this, "点击了"+position,Toast.LENGTH_SHORT).show();
    }
    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(this, "长按了"+position,Toast.LENGTH_SHORT).show();
        return true;//消化,false不消化,也就是会执行点击
    }
}

新建文件代码:(selector.xml)

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
    android:drawable="@drawable/click”
    android:state_pressed="false"/>
    <item
        android:drawable="@drawable/onclick"
        android:state_pressed="true"/>
</selector>

背景图片自己找!

listview.xml:加这一句
在这里插入图片描述
运行图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

其中还有一种方法改变点击前后背景
1、在valus下新建一个.xml名字叫color.xml:代码为:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="transparent">#00000000</color>
    <color name="choose">#9b9bf4</color>
</resources>

selector.xml 代码更改为下:
在这里插入图片描述
然后引用这句代码android:background="@drawable/selector"放的位置要注意(放在最外面)
在这里插入图片描述
同时activity_main.xml:加一句代码
在这里插入图片描述
效果如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值