以下是一个示例代码,演示了如何比较两个ListView的父项和子项,并改变图片索引:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity {
private ExpandableListView listView1, listView2;
private List listDataHeader1, listDataHeader2;
private Map> listDataChild1, listDataChild2;
private MyExpandableListAdapter adapter1, adapter2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化数据
initData();
// 初始化ListView
listView1 = (ExpandableListView) findViewById(R.id.listView1);
listView2 = (ExpandableListView) findViewById(R.id.listView2);
// 初始化适配器
adapter1 = new MyExpandableListAdapter(listDataHeader1, listDataChild1);
adapter2 = new MyExpandableListAdapter(listDataHeader2, listDataChild2);
// 设置适配器
listView1.setAdapter(adapter1);
listView2.setAdapter(adapter2);
// 处理父项点击事件
listView1.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
// 获取当前父项的图片
ImageView imageView = (ImageView) v.findViewById(R.id.imageView);
int imageIndex = (int) imageView.getTag();
// 获取对应的子项列表
List childList = listDataChild1.get(listDataHeader1.get(groupPosition));
// 比较父项和子项的数量
if (childList.size() > imageIndex) {
// 子项数量大于图片索引,修改图片索引
imageIndex++;
} else {
// 子项数量小于等于图片索引,重置图片索引
imageIndex = 0;
}
// 更新图片索引
imageView.setTag(imageIndex);
imageView.setImageResource(getImageResource(imageIndex));
return false;
}
});
// 处理子项点击事件
listView1.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
// 与处理父项点击事件类似,对应修改子项的图片索引
List childList = listDataChild1.get(listDataHeader1.get(groupPosition));
ImageView imageView = (ImageView) v.findViewById(R.id.imageView);
int imageIndex = (int) imageView.getTag();
if (childList.size() > imageIndex) {
imageIndex++;
} else {
imageIndex = 0;
}
imageView.setTag(imageIndex);
imageView.setImageResource(getImageResource(imageIndex));
return false;
}
});
}
// 初始化数据
private void initData() {
listDataHeader1 = new ArrayList();
listDataHeader2 = new ArrayList();
listDataChild1 = new HashMap>();
listDataChild2 = new HashMap>();
// 添加父项1
listDataHeader1.add("Parent 1");
// 添加父项1的子项列表
List childList1 = new ArrayList();
childList1.add("Child 1");
childList1.add("Child 2");
childList1.add("Child 3");
listDataChild1.put(listDataHeader1.get(0), childList1);
// 添加父项2
listDataHeader1.add("Parent 2");
// 添加父项2的子项列表
List childList2 = new ArrayList();
childList2.add("Child 1");
childList2.add("Child 2");
childList2.add("Child 3");
listDataChild1.put(listDataHeader1.get(1), childList2);
// 添加父项3
listDataHeader2.add("Parent 1");
// 添加父项3的子项列表
List childList3 = new ArrayList();
childList3.add("Child