废话少说,贴上代码如下: 1.activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.yekong.homework4.MainActivity"> <TextView android:layout_width="match_parent" android:layout_height="40dp" android:text="ArrayList Demo" android:textSize="30dp" android:layout_gravity="center" android:gravity="center" android:background="@color/tool_bg" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <ListView android:id="@+id/listview1" android:layout_width="match_parent" android:layout_height="wrap_content" android:divider="#f00" android:dividerHeight="2dp" > </ListView> </LinearLayout> <ListView android:id="@+id/listview2" android:layout_width="match_parent" android:layout_height="wrap_content" android:divider="@drawable/bg1" android:dividerHeight="2dp" > </ListView> </LinearLayout> 2.array_item.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/show_text" android:paddingStart="?android:attr/expandableListPreferredItemPaddingLeft" android:textAppearance="?android:attr/textAppearanceListItem" android:textAlignment="viewStart" > </TextView> <!--注意这里定义了一个TextView控件,作为分割线--> <TextView android:id="@+id/line_bg" android:layout_width="match_parent" android:layout_height="2dp" /> </LinearLayout> 3.list_item.xml <?xml version="1.0" encoding="utf-8"?> <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/list_item_textview" android:paddingStart="?android:attr/expandableListPreferredItemPaddingLeft" android:textAppearance="?android:attr/textAppearanceListItem" android:textAlignment="viewStart" android:checked="true" android:checkMark="?android:attr/textCheckMark" > </CheckedTextView> 4.MainActivit.java package com.example.yekong.homework4; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private ListView listView1=null; private ListView listView2=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } public void init(){ listView1=(ListView)findViewById(R.id.listview1); listView2=(ListView)findViewById(R.id.listview2); MyAdapter adapter=new MyAdapter(this,R.layout.array_item,getResources().getStringArray(R.array.list_content1)); listView1.setAdapter(adapter); listView2.setAdapter(new ArrayAdapter<String>(this,R.layout.list_item,getResources().getStringArray(R.array.list_content2))); listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { getToast("you click item "+i); } }); } public void getToast(String content){ Toast.makeText(this,content,Toast.LENGTH_SHORT).show(); } } 5.MyAdapter.java package com.example.yekong.homework4; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; import java.util.List; /** * Created by YeKong on 2017/5/31. */ //自定义ArrayAdapter,;重载子view布局 public class MyAdapter extends ArrayAdapter<String> { Context context; LayoutInflater inflater; List<String> list=null; String[] str=null; public MyAdapter(Context context, int resource, String[] objects) { super(context, resource, objects); this.context=context; this.inflater=LayoutInflater.from(context); this.str=objects; } public MyAdapter(Context context, int resource, List<String> objects) { super(context, resource, objects); this.context=context; this.list=objects; } @Override public String getItem(int position) { return super.getItem(position); } @Override public int getPosition(String item) { return super.getPosition(item); } @Override public int getCount() { return super.getCount(); } @Override public long getItemId(int position) { return super.getItemId(position); } @Override public View getView(int position, View convertView, ViewGroup parent) { final Holder holder; if(convertView==null){ holder = new Holder(); convertView=inflater.inflate(R.layout.array_item, null);//加载子项item的布局文件 holder.textView1=(TextView) convertView.findViewById(R.id.show_text); holder.textView2=(TextView) convertView.findViewById(R.id.line_bg); convertView.setTag(holder); }else{ holder=(Holder)convertView.getTag(); } holder.textView1.setText(str[position]); switch (position){ case 0: holder.textView2.setBackgroundColor(context.getResources().getColor(R.color.colorAccent)); break; case 1: holder.textView2.setBackgroundColor(context.getResources().getColor(R.color.divider1)); break; case 2: holder.textView2.setBackgroundColor(context.getResources().getColor(R.color.divider2)); break; } return convertView; } class Holder{ TextView textView1,textView2; } } 运行项目,效果如下图,可以看到第一个listview中每条分割线的颜色都不一样了
