public class Main extends LinearLayout implements ImageRecyle

{

/**

* 封装分类的搜索结果类的实例

*/

private ExpandableListView listView;

private SearchExpandableAdapter seadapter;

/**

* 上下文对象

*/

private Context mContext;

/**

* 选项被选中是的背景色

*/

public static final int SELECTED_ITEM_COLOR = 0xFFaaddFF;

/**

* 构造函数

*

* @param context 上下文对象

*/

public SearchResultSort(final Context context)

{

super(context);

mContext = context;

// 获取页面布局

View mainView = LayoutInflater.from(context).inflate(

R.main, this);

// 获取封装好的搜索结果列表

listView = (ExpandableListView) findViewById(R.id.searchResultsort);

seadapter=new SearchExpandableAdapter(mContext);

listView.setAdapter(seadapter);

// 获取搜索列表的分组数量

int groupCount = listView.getCount();

if (groupCount > 0)

{

// 展开第一个组

listView.expandGroup(0);

}

// 设置子元素被点击的事件监听

listView.setOnChildClickListener(new OnChildClickListener()

{

public boolean onChildClick(ExpandableListView parent, View v, int groupPosition,

int childPosition, long id)

{

//对选中项进行操作 // 将所有的列表项中的颜色清空

int visStart = listView.getFirstVisiblePosition();

int visEnd = listView.getLastVisiblePosition();

View viewTemp;

for (int i = 0; i <= visEnd - visStart; i++)

{

viewTemp = listView.getChildAt(i);

if (viewTemp != null && viewTemp.getTag() != null)

{

viewTemp.setBackgroundColor((Integer) viewTemp.getTag());

}

}

// 设置点击的子元素

listView.setSelectedChild(groupPosition, childPosition, true);

// 设置被点击子元素的背景颜色

v.setBackgroundColor(SELECTED_ITEM_COLOR);

return true;

}

});

}

/**

* 分类列表适配器

*/

private class SearchExpandableAdapter extends BaseExpandableListAdapter

{

// 上下文对象

private Context mContext;

// 分类的组集合

private String[] groups =

{ "Music(3", "Video(5" };

/**

* 构造函数

*

* @param context 上下文对象

*/

public SearchExpandableAdapter(Context context)

{

super();

mContext = context;

}

/**

* 获取子元素对象

*

* @param groupPosition 子元素所在的组集合位置

* @param childPosition 子元素所在元素集合的位置

* @return 子元素对象

*/

public Object getChild(int groupPosition, int childPosition)

{

return null;

}

/**

* 获取子元素所在元素集合的位置

*

* @param groupPosition 子元素所在的组集合位置

* @param childPosition 子元素所在元素集合的位置

* @return 子元素所在元素集合的位置

*/

public long getChildId(int groupPosition, int childPosition)

{

return childPosition;

}

/**

* 获取给定组的子元素的个数

*

* @param groupPosition 组的位置

* @return 该组子元素的个数

*/

public int getChildrenCount(int groupPosition)

{

return picIds[groupPosition].length;

}

/**

* 获取组的视图

*

* @return 组的视图

*/

public TextView getGroupView()

{

AbsListView.LayoutParams lp = new AbsListView.LayoutParams(

ViewGroup.LayoutParams.FILL_PARENT, 38);

TextView textView = new TextView(mContext);

textView.setBackgroundResource(R.drawable.search_bg_list_small);

textView.setTextSize(14f);

textView.setLayoutParams(lp);

textView.setTextColor(0xBB000000);

textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);

textView.setPadding(35, 0, 0, 0);

return textView;

}

/**

* 获取分组的视图

*

* @param groupPosition 分组的位置

* @param isExpanded 是否已经展开

* @param convertView 转换视图

* @param parent 父元素视图

* @return 分组的视图

*/

public View getGroupView(int groupPosition, boolean isExpanded,

View convertView, ViewGroup parent)

{

TextView textView = getGroupView();

textView.setText(getGroup(groupPosition).toString());

return textView;

}

/**

* 获取子元素的视图

*

* @param groupPosition 子元素所在的组集合位置

* @param childPosition 子元素所在元素集合的位置

* @param isLastChild 是否是最后一个子元素

* @param convertView 转换视图

* @param parent 父元素视图

* @return 子元素的视图

*/

public View getChildView(int groupPosition, int childPosition,

boolean isLastChild, View convertView, ViewGroup parent)

{

ImageView listImage;

TextView searchTitle;

TextView searchSinger;

TextView searchPay;

final RatingBar searchStars;

if (convertView == null)

{//获得view

convertView = LayoutInflater.from(mContext).inflate(

R.layout.search_result_item, parent, false);

}

listImage = (ImageView) convertView.findViewById(R.id.searchImage);

searchTitle = (TextView) convertView.findViewById(R.id.searchTitle);

searchStars = (RatingBar) convertView

.findViewById(R.id.searchStars);

searchPay = (TextView) convertView.findViewById(R.id.searchPay);

if (listImage != null)

{

Bitmap temp = BitmapFactory.decodeResource(mContext

.getResources(), picIds[groupPosition][childPosition]);

listImage.setImageBitmap(temp);

}

if (searchTitle != null)

{

String ellipsisStr = (String) TextUtils.ellipsize(

titles[groupPosition][childPosition],

(TextPaint) searchTitle.getPaint(), 150,

TextUtils.TruncateAt.END);

searchTitle.setText(ellipsisStr);

ellipsisStr = (String) TextUtils.ellipsize(

singers[groupPosition][childPosition],

(TextPaint) searchTitle.getPaint(), 150,

TextUtils.TruncateAt.END);

searchSinger.setText(ellipsisStr);

}

if (searchStars != null)

{

searchStars.setNumStars(5);

searchStars.setRating(stars[groupPosition][childPosition]);

}

if (childPosition % 2 == 1)

{

convertView.setBackgroundColor(0xfff6f6f6);

convertView.setTag(0xfff6f6f6);

}

else

{

convertView.setBackgroundColor(0xFFFFFFFF);

convertView.setTag(0xFFFFFFFF);

}

return convertView;

}

/**

* 获取组对象

*

* @param groupPosition 所在组的位置

* @return 组对象

*/

public Object getGroup(int groupPosition)

{

return groups[groupPosition];

}

/**

* 获取分组的个数

*

* @return 分组的个数

*/

public int getGroupCount()

{

return groups.length;

}

/**

* 获取分组的位置

*

* @param groupPosition 分组的位置

* @return 分组的位置

*/

public long getGroupId(int groupPosition)

{

return groupPosition;

}

/**

* 子元素是否可选

*

* @param groupPosition 子元素所在的组集合位置

* @param childPosition 子元素所在元素集合的位置

* @return ture

*/

public boolean isChildSelectable(int groupPosition, int childPosition)

{

return true;

}

public boolean hasStableIds()

{

return true;

}

}

// 组包含的子元素集合

private String[][] titles =

{

{ "Scarborough Fair", "Gloomy Sunday", "Fleurs Du Mai" },

{ "Time ", "You", } };

private int[][] picIds =

{

{ R.drawable.pic_list_01, R.drawable.pic_list_02,

R.drawable.pic_list_03 },

{ R.drawable.pic_list_04, R.drawable.music_list_06,

R.drawable.music_list_13 }};

private float[][] stars =

{

{ 4, 5, 4 },

{ 4, 4 } };

更多相关文章

  1. Java,Android,窥探组合的用法。AndroidUI组合设计模式,Java组合设
  2. android小知识
  3. android百度地图(二)之定位
  4. android.intent.action.MEDIA_MOUNTED广播无法收到的问题
  5. Android(安卓)TabHost的使用(一)
  6. Android开发:高德地图通过经纬度反编译其位置名称
  7. Android(安卓)高德定位展示当前位置在地图上
  8. 15个Android很有用的代码片段
  9. android 通过百度地图定位获取坐标在导航地图上面显示,坐标发生偏

随机推荐

  1. Android(安卓)AlarmManager简单例子
  2. Android 链接 java 服务无法打开链接的问
  3. PhoneGap系列专题之二:使用PhoneGap云服务
  4. Android中的WiFi开发简明教程
  5. cocos2d-x eclipse 环境搭配。我能找到网
  6. Android中调取系统相机和相册功能
  7. ArcGIS 4 Android开发环境搭建
  8. Android 中文API (46) ―― SimpleAdapter
  9. Android通过chrome插件在线查看Android源
  10. android 14.04 64位 adb cannot run prog