android_实例_利用radiobutton实现分类筛选,Android_实例_利用RadioButton实现分类筛选...

/**

* 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:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="8dp"

android:orientation="vertical" >

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginBottom="4dp"

android:layout_marginTop="4dp"

android:scrollbars="none" >

android:id="@+id/container"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="horizontal" >

android:layout_width="match_parent"

android:layout_height="2.0px"

android:layout_marginTop="5dp"

android:layout_marginBottom="5dp"

android:background="#ffcccccc" />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值