【发布时间】:2011-08-03 19:01:59
【问题描述】:
我有以下源代码,这是一个可扩展列表,它有一个子列表,其中有一些视图,如图像按钮、图像按钮,我想对这些视图进行事件处理。请 为我提供以下源代码。
公共类 ExpList 扩展 ExpandableListActivity {
ImageView imageView,心;
查看视图;
ArrayList 计数 = new ArrayList();
//私有上下文上下文;
ExpandableListAdapterDemo 适配器;
静态最终字符串 shades[][] = {
// 灰色的影子
{“第 1 集”、“第 1 集”、“第 1 集”、“第 1 集”、“第 1 集”},
// 蓝色阴影
{“第 2 集”、“第 2 集”、“第 2 集”、“第 2 集”、“第 2 集”、
“第 2 集”},
{“第 3 集”,“第 3 集”,“第 3 集”},
//红色阴影
{“第 4 集”,“第 4 集”,“第 4 集”,“第 4 集”},
{“第 5 集”,“第 5 集”,“第 5 集”,“第 5 集”},
{ “第 6 集”,“第 6 集”,“第 6 集”,“第 6 集”,“第 6 集”,
“第 6 集”},
{ “第 7 集”、“第 7 集”、“第 7 集”、“第 7 集”、“第 7 集”、
“第 7 集”},
{“第 8 集”,“第 8 集”,“第 8 集”,“第 8 集”,“第 8 集”},
{ “第 9 集”、“第 9 集”、“第 9 集”、“第 9 集”、“第 9 集”、
“第 9 集”,“第 9 集”},
{ “第 10 集”,“第 10 集”,“第 10 集”,“第 10 集”,“第 10 集”,
“第 10 集”、“第 10 集”、“第 10 集”}
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
Log.i("ARRy lentgh_____________", " " + shades.length);
for (int n = 0; n < shades.length; n++) {
count.add(Integer.toString(shades[n].length));
Log.i("item y lentgh_____________", " " + shades[n].length);
}
for (int n = 0; n < count.size(); n++) {
Log.i("List Elements are_____________", " " + count.get(n));
// count.add(Integer.toString(shades[n].length));
}
madapter= new ExpandableListAdapterDemo(this,createGroupList(),createChildList());
SimpleExpandableListAdapter expListAdapter = new SimpleExpandableListAdapter(
this, createGroupList(), // groupData describes the first-level
// entries
R.layout.parent_row, // Layout for the first-level entries
new String[] { "count" }, // Key in the groupData maps to
// display
new int[] { R.id.episode_count }, // Data under "colorName" key
// goes into this TextView
createChildList(), // childData describes second-level entries
R.layout.child_row, // Layout for second-level entries
new String[] { "shadeName" }, // Keys in childData maps to
// display
new int[] { R.id.childname } // Data under the keys above go
// into these TextViews
);
setListAdapter(expListAdapter);
final ExpandableListView exlv = this.getExpandableListView();
Log.i("exlv.getWidth():widthhhhhhhhh", "" + exlv.getWidth() + 50);
exlv.setIndicatorBounds(exlv.getWidth() + 30, exlv.getWidth() + 520);
exlv.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int arg0) {
// TODO Auto-generated method stub
Log.i("Group Expand id is ", " " + exlv.getChildAt(arg0)+"Count is "+exlv.getChildCount()
+ " ");
LinearLayout linearLayout= (LinearLayout) exlv.getChildAt(arg0);
//LinearLayout linearLayout= (LinearLayout)findViewById(R.layout.child_row);
Log.i("Linear layout is ", " " + linearLayout
+ " ");
imageView= (ImageView)linearLayout.findViewById(R.id.imageView2);
Log.i("Image view id is ", " " + imageView
+ " ");
}
});
exlv.setOnGroupClickListener(new OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView arg0, View arg1,
int arg2, long arg3) {
LinearLayout linearLayout= (LinearLayout) arg0.getChildAt(arg2);
imageView= (ImageView)linearLayout.findViewById(R.id.imageView2);
Log.i("Image view id is ", " " + imageView
+ " ");
Log.i("View is", ";;;;;;;;;;;; " + arg1.findViewById(R.id.imageView2)
+ " layout "+linearLayout+"image id on group "+imageView);
Toast.makeText(getBaseContext(), "Group clicked ",
Toast.LENGTH_SHORT).show();
return false;
}
});
exlv.setOnChildClickListener(new OnChildClickListener() {
public boolean onChildClick(ExpandableListView arg0, View arg1,
int arg2, int arg3, long arg4) {
Toast.makeText(ExpList.this,
"Child ItemClicked " + arg2 + " " + arg3,
Toast.LENGTH_SHORT).show();
imageView = (ImageView)arg1.findViewById(R.id.imageView2);
Log.i("ImageView Value "," hi "+imageView.toString());
imageView.setOnClickListener(new OnClickListener() {
@Override public void onClick(View arg0) { // TODO Auto-generated
Intent intent = new Intent(ExpList.this,DemoActivity.class);
startActivity(intent);
} });
// TODO Auto-generated method stub
return false;
}
});
/*
* imageView.setOnClickListener(new OnClickListener() {
*
* @Override public void onClick(View arg0) { // TODO Auto-generated
* method stub Intent intent = new
* Intent(ExpList.this,DemoActivity.class); startActivity(intent); } });
*/
for (int n = 0; n < count.size(); n++) {
Log.i("Values of episode is ", " " + count.get(n));
}
}
/**
* Creates the group list out of the colors[] array according to the
* structure required by SimpleExpandableListAdapter. The resulting List
* contains Maps. Each Map contains one entry with key "colorName" and value
* of an entry in the colors[] array.
*/
private List createGroupList() {
ArrayList result = new ArrayList();
Log.i("size of count is", " " + count.size());
for (int i = 0; i < shades.length; i++) {
HashMap m = new HashMap();
m.put("count", count.get(i));
result.add(m);
}
return result;
}
/**
* Creates the child list out of the shades[] array according to the
* structure required by SimpleExpandableListAdapter. The resulting List
* contains one list for each group. Each such second-level group contains
* Maps. Each such Map contains two keys: "shadeName" is the name of the
* shade and "rgb" is the RGB value for the shade.
*/
private List createChildList() {
ArrayList result = new ArrayList();
Log.i("two dim Array Size is ", " Size is " + shades.length);
for (int i = 0; i < shades.length; ++i) {
// Second-level lists
ArrayList secList = new ArrayList();
for (int j = 0; j < shades[i].length; j++) {
HashMap child = new HashMap();
child.put("shadeName", shades[i][j]);
secList.add(child);
}
result.add(secList);
}
return result;
}
public class ExpandableListAdapterDemo extends BaseExpandableListAdapter {
@Override
public boolean areAllItemsEnabled() {
return true;
}
private Context context;
private ArrayList<String> groups;
private ArrayList<ArrayList> children;
public ExpandableListAdapterDemo(Context context, List groups, List chiildren)
{
this.context = context;
this.groups = (ArrayList<String>) groups;
this.children = (ArrayList<ArrayList>) chiildren;
}
/**
* A general add method, that allows you to add a Vehicle to this list
*
* Depending on if the category opf the vehicle is present or not, the
* corresponding item will either be added to an existing group if it
* exists, else the group will be created and then the item will be
* added
*
* @param vehicle
*/
@Override
public Object getChild(int groupPosition, int childPosition) {
return children.get(groupPosition).get(childPosition);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
// Return a child view. You can load your custom layout here.
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
ImageView tv = (ImageView) convertView
.findViewById(R.id.imageView2);
tv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Log.i("hiiiiiiiiiiiiiiiii","image clicked");
Intent intent = new Intent(ExpList.this, DemoActivity.class);
startActivity(intent);
}
});
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return children.get(groupPosition).size();
}
@Override
public Object getGroup(int groupPosition) {
return groups.get(groupPosition);
}
@Override
public int getGroupCount() {
return groups.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
// Return a group view. You can load your custom layout here.
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// String group = (String) getGroup(groupPosition);
return convertView;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public boolean isChildSelectable(int arg0, int arg1) {
return true;
}
}
}
【问题讨论】:
-
o_O 天哪。首先我完全不明白,你想要什么。而且我不明白赞成票:(
-
我想在父列表的点击事件中访问子列表的视图。