新建java类 -- New -- Java Class(命名MyAdapter)
public class MyAdapter extends BaseAdapter {
List<Map<String, Object>> list;
LayoutInflater inflater;
public MyAdapter(Context context) { //Alt+Insert 自动生成代码的选项 //Alt+Insert -- Constructor -- Select None
//Context类型由自己给出
this.inflater = LayoutInflater.from(context); //初始化反射器,from需要唯一的参数context
}
public void setList(List<Map<String, Object>> list) { //Alt+Insert -- setter -- list:List<Map<String, Object>>
this.list = list;
}
@Override
public int getCount() { //获取ListView的行数
return list.size();
}
@Override
public Object getItem(int position) { //当前项的数据的对象
return list.get(position);
}
@Override
public long getItemId(int position) { //当前项的id
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//(资源id, view组用户类型(无实际意义))
View view = inflater.inflate(R.layout.item, null); //inflater:将xml文本文件反射成View对象
}
//拿到控件对象
ImageView logo = (ImageView) view.findViewById(R.id.logo);
TextView title = (TextView) view.findViewById(R.id.title);
TextView version = (TextView) view.findViewById(R.id.version);
TextView size = (TextView) view.findViewById(R.id.size);
Map map = list.get(position); //声明map临时变量,拿到键值对集合
logo.setImageResource((Integer) map.get("logo")); //获取资源id,key的关键字是logo
title.setText((String) map.get("title"));
version.setText((String) map.get("version"));
size.setText((String) map.get("size"));
return view; //返回什么画什么
}
}
Java代码 -- MainActivity
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main7);
//1.拿到listview对象
ListView lv = (ListView) this.findViewById(R.id.lv_main);
//2.数据源
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String,Object> map = new HashMap<String, Object>();
map.put("logo", R.drawable.ic_10);
map.put("title", "千千静听");
map.put("version", "版本: 8.4.0");
map.put("size", "大小: 32.81M");
list.add(map);
map = new HashMap<String, Object>();
map.put("logo", R.drawable.ic_2);
map.put("title", "时空猎人");
map.put("version", "版本: 2.4.1");
map.put("size", "大小: 84.24M");
list.add(map);
map = new HashMap<String, Object>();
map.put("logo", R.drawable.ic_4);
map.put("title", "360新闻");
map.put("version", "版本: 6.2.0");
map.put("size", "大小: 11.74M");
list.add(map);
map = new HashMap<String, Object>();
map.put("logo", R.drawable.ic_15);
map.put("title", "捕鱼达人2");
map.put("version", "版本: 2.3.0");
map.put("size", "大小: 45.53M");
list.add(map);
//3.实例化自己的适配器
MyAdapter adapter = new MyAdapter(this);
adapter.setList(list); //传数据
//4.关联适配器
lv.setAdapter(adapter);
}
}
public class MainActivity extends Activity implements AdapterView.OnItemClickListener, AdapterView.OnItemLongClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main7);
//1.拿到ListView对象
ListView lv = (ListView) this.findViewById(R.id.lv_main);
//2.数据源
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String,Object> map = new HashMap<String, Object>();
map.put("logo", R.drawable.ic_10);
map.put("title", "千千静听");
map.put("version", "版本: 8.4.0");
map.put("size", "大小: 32.81M");
list.add(map);
map = new HashMap<String, Object>();
map.put("logo", R.drawable.ic_2);
map.put("title", "时空猎人");
map.put("version", "版本: 2.4.1");
map.put("size", "大小: 84.24M");
list.add(map);
map = new HashMap<String, Object>();
map.put("logo", R.drawable.ic_4);
map.put("title", "360新闻");
map.put("version", "版本: 6.2.0");
map.put("size", "大小: 11.74M");
list.add(map);
map = new HashMap<String, Object>();
map.put("logo", R.drawable.ic_15);
map.put("title", "捕鱼达人2");
map.put("version", "版本: 2.3.0");
map.put("size", "大小: 45.53M");
list.add(map);
//3.实例化自己的适配器
MyAdapter adapter = new MyAdapter(this);
adapter.setList(list);
//4.关联适配器
lv.setAdapter(adapter);
//5
lv.setOnItemClickListener(this);
lv.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;
}
}
按钮切换图片,item项切换颜色
示例1:
drawable -- btn_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn_bg2" android:state_pressed="false"/>
<item android:drawable="@drawable/btn_bg_p" android:state_pressed="true"/>
</selector>
item.xml -- button
<Button
android:id="@+id/btn"
android:layout_width="66dp"
android:layout_height="30dp"
android:text="卸载"
android:textSize="14sp"
android:textColor="#fff"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="@drawable/btn_selector"
/>
values -- New -- XML (新建colors.xml)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="transparent">#00000000</color> //透明色
<color name="choose">#FF00EAFF</color>
</resources>
drawable -- item_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/transparent" android:state_pressed="false"/>
<item android:drawable="@drawable/fire3" android:state_pressed="true"/>
</selector>
Java代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ListView
android:id="@+id/lv_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:listSelector="@drawable/item_selector"
/>
</RelativeLayout>