前提代码:
一、点击、长按:
二、背景:
第一步:在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:加一句代码
效果如下: