一.首先创建一个MyAdapter类继承SimpleAdapter
造福伸手党,直接贴代码(我们坚决不做抄袭者,我们只是照搬工),拿走不谢:
package tool;
import android.content.Context;
import android.graphics.Color;
import android.view.View;
import android.view.ViewGroup;
import android.widget.SimpleAdapter;
import java.util.ArrayList;
import java.util.HashMap;
import static com.example.w9.GoodsPlateActivity.selectedItemsByGoods;
public class MyAdapter extends SimpleAdapter {
//数据List
private ArrayList> arrayList;
//上下文
private Context mContext;
/**
* 参数分别为:
* 上下文context,数据集 data,ListView,from,new int[]{ R.id.itemTitle,R.id.itemText}
* **/
public MyAdapter(Context context, ArrayList> data, int resource, String[] from, int[] to){
super(context, data, resource, from, to);
// TODO Auto-generated constructor stub
this.arrayList = data;
CallActivityNmae = ActivityNmae;
}
//配置显示的总item数量
@Override
public int getCount() {
return arrayList.size();
}
//按照位置获取数据对象
@Override
public Object getItem(int position) {
return arrayList.get(position);
}
//根据位置获取item的id
@Override
public long getItemId(int position) {
return position ;
}
//每个item的显示效果
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
view.setBackgroundColor((Color.parseColor("#F0F8FF")));
/**
* 货物列表
* 根据selectedItemsByGoods中的View position给初始颜色
* #6495ED:选中颜色
* #F0F8FF 初始颜色
* **/
if(CallActivityNmae.equals("GoodsPlateActivity")){
if(selectedItemsByGoods!=null && selectedItemsByGoods.size()>0){
if(selectedItemsByGoods.contains(position)){
view.setBackgroundColor((Color.parseColor("#6495ED")));
}else{
view.setBackgroundColor((Color.parseColor("#F0F8FF")));
}
}
}
return view;
}
}
二.我们自定义一个布局文件goodslist_layout(名字随意),让我们的数据以我们想要的样式展示出来:
例如,我想要这样子展示出来:
代码:
注意,这个是一个单独的布局文件,是没有Activity文件的。
三.搬完之后我们接着进入下一步,布局文件代码(带Activity文件的布局文件):
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.HashMap;
import tool.MyAdapter;
public class BlogActivity extends AppCompatActivity {
private ListView goodsList; //ListView
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_blog);
//绑定ListView列表
goodsList = (ListView) findViewById(R.id.goodsList);
//要显示的数据集
ArrayList> arrayList=new ArrayList>();
//模拟数据add入数据集
HashMap map = new HashMap();
map.put("itemTitle","JAVA");
map.put("itemText","JAVA好犀利");
arrayList.add(map);
HashMap map1 = new HashMap();
map1.put("itemTitle","C#");
map1.put("itemText","C#好犀利");
arrayList.add(map1);
HashMap map2 = new HashMap();
map2.put("itemTitle","Python");
map2.put("itemText","Python好犀利");
arrayList.add(map2);
/**
* 自定义SimpleAdapter
* BlogActivity.this :该Activity
* arrayList :数据集
* R.layout.goodslist_layout :布局文件
* new String[]{"itemTitle","itemText"} :布局文件中的东西
* new int[]{ R.id.itemTitle,R.id.itemText} :布局文件的的东西
* **/
try{
MyAdapter myAdapter = new MyAdapter(BlogActivity.this, arrayList, R.layout.goodslist_layout, new String[]{"itemTitle","itemText"}, new int[]{ R.id.itemTitle,R.id.itemText},"GoodsPlateActivity");
goodsList.setAdapter(myAdapter);
}catch (Exception e){
int i = 0;//测试用
}
//goodsList的监视器
((ListView) findViewById(R.id.goodsList)).setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
/**
* position:表示第几个Item
* view:点击的第几个Item
* **/
//这里可以定义Item的点击事件
//ItemClick(position);
parent.getEmptyView();
//点击该行Item改变该行的颜色
//不难自行理解
View tag=(View)parent.getTag();
if (tag != null)
{
if (tag.getId()==id) {
return;
}else{
tag.setBackgroundColor(Color.parseColor("#F0F8FF"));
}
}
view.setBackgroundColor(Color.parseColor("#6495ED"));
parent.setTag(view);
}
});
}
}
然后运行项目看效果吧,
下一篇博客会讲选择Item之后,该行Item变颜色(可以选择多个,多行变颜色)