展会信息港展会大全

Android_实例_利用RadioButton实现分类筛选
来源:互联网   发布日期:2015-12-04 16:39:44   浏览:1445次  

导读:1.示意图 2.代码实现 /** * CategoryView.java * @author zimo2013 * @see http://blog.csdn.net/zimo2013 * */ public class CategoryView extends LinearLayout implements OnCheckedChangeListener { private LayoutInflater inflater; public CategoryVi...

1.示意图

2.代码实现

/**

* CategoryView.java

* @author zimo2013

* @see http://blog.csdn.net/zimo2013

*

*/

public class CategoryView extends LinearLayout implements

OnCheckedChangeListener {

private LayoutInflater inflater;

public CategoryView(Context context) {

this(context, null);

}

public CategoryView(Context context, AttributeSet attrs) {

super(context, attrs);

inflater = LayoutInflater.from(context);

}

/**添加方法*/

public void add(List list) {

if (list.size() > 0) {

//加载布局

View view = inflater.inflate(R.layout.category_container, null);

addView(view);

RadioGroup radioGroup = (RadioGroup) view.findViewById(R.id.container);

RadioButton bt = newRadioButton(全部);

radioGroup.addView(bt);

// 默认选中

radioGroup.check(bt.getId());

// 全部

for (String str : list) {

bt = newRadioButton(str);//实例化新的RadioButton

radioGroup.addView(bt);

}

//为当前RadioGroup设置监听器

radioGroup.setOnCheckedChangeListener(this);

}

}

/**创建RadioButton*/

private RadioButton newRadioButton(String text) {

RadioButton button = new RadioButton(getContext());

RadioGroup.LayoutParams params = new RadioGroup.LayoutParams(

RadioGroup.LayoutParams.WRAP_CONTENT,

RadioGroup.LayoutParams.WRAP_CONTENT);

//设置内外边距

params.leftMargin = 6;

params.rightMargin = 6;

button.setLayoutParams(params);

button.setPadding(4, 0, 4, 0);

//设置背景

button.setBackgroundResource(R.drawable.selector_category_bg);

//去掉左侧默认的圆点

button.setButtonDrawable(android.R.color.transparent);

//设置不同状态下文字颜色,通过ColorStateList,对应的selector放在res/color文件目录中,否则没有效果

button.setTextColor(getResources().getColorStateList(R.color.selector_category_text));

button.setGravity(Gravity.CENTER);

button.setText(text);

return button;

}

@Override

public void onCheckedChanged(RadioGroup group, int checkedId) {

if(mListener != null){

mListener.click(group, checkedId);

}

}

/**指定监听器*/

public void setOnClickCategoryListener(OnClickCategoryListener l){

mListener = l;

}

private OnClickCategoryListener mListener;

/**回掉接口*/

public interface OnClickCategoryListener{

/**点击事件发生*/

public void click(RadioGroup group, int checkedId);

}

}

/**

* MainActivity.java 测试

* @author zimo2013

* @see http://blog.csdn.net/zimo2013

*

*/

public class MainActivity extends Activity {

private List list = new ArrayList();

private List list1 = new ArrayList();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

CategoryView categoryView = (CategoryView) findViewById(R.id.category);

list.add(内地1);

list.add(内地2);

list.add(内地3);

list.add(内地4);

list.add(内地5);

list.add(内地6);

list.add(内地7);

list.add(内地8);

list.add(内地9);

list1.add(动作);

list1.add(喜剧);

list1.add(励志);

list1.add(动作2);

list1.add(喜剧2);

list1.add(励志2);

list1.add(动作3);

list1.add(喜剧3);

list1.add(励志3);

categoryView.add(list);

categoryView.add(list1);

categoryView.add(list);

//设置自定义监听器

categoryView.setOnClickCategoryListener(new OnClickCategoryListener() {

//逻辑回掉

@Override

public void click(RadioGroup group, int checkedId) {

RadioButton button = (RadioButton) group.findViewById(checkedId);

Toast.makeText(getApplicationContext(), button.getText(), 0).show();

}

});

}

}

代码下载》》

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港