设置的OnClick监听器上的按钮,里面的android列表视图 [英] Set OnClick Listener on button inside list view in android
本文介绍了设置的OnClick监听器上的按钮,里面的android列表视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个列表视图在我的屏幕,每一个列表项包含2文本视图和一个按钮。 在按钮点击我要带列表项中选择指数从载体得到一些数据。
这是我的名单自定义Adapter.But我不知道该怎么做。
私有类CustomAdapter扩展ArrayAdapter< ServicesItems> {
公共CustomAdapter(上下文的背景下,INT资源,
INT textViewResourceId,名单,其中,ServicesItems>对象){
超(背景下,资源,textViewResourceId,对象);
}
@覆盖
公共查看getView(INT位置,查看convertView,ViewGroup中父){
ViewHolder支架=无效;
TextView的项目= NULL;
TextView中描述= NULL;
按钮subNowBtn;
ServicesItems II =的getItem(位置);
如果(空== convertView){
convertView = mInflater.inflate(
R.layout.list_of_servics_item_2,NULL);
持有人=新ViewHolder(convertView);
convertView.setTag(保持器);
}
支架=(ViewHolder)convertView.getTag();
// cat_name = holder.gettitle();
资源资源= getResources();
ServicesItems bean1 =(ServicesItems)servicesVector
.elementAt(位置);
。字符串cat_name_str = bean1.getService_name()的toString();
。字符串descreption = bean1.getDescription()的toString();
项目= holder.getItem();
item.setText(bean1.getDescription());
说明= holder.getDescription();
description.setText(bean1.getService_name());
subNowBtn = holder.getSubButton();
返回convertView;
}
私有类ViewHolder {
私人查看MROW;
私人TextView中描述= NULL;
私人TextView的项目= NULL;
私人按钮副= NULL;
公共ViewHolder(查看行){
MROW =行;
}
公众的TextView getDescription(){
如果(空==介绍){
说明=(TextView中)MROW
.findViewById(R.id.category_tv);
}
返回描述;
}
公众的TextView的getItem(){
如果(空==项目){
项目=(TextView中)
mRow.findViewById(R.id.descreption_tv);
}
归还物品;
}
公共按钮getSubButton(){
如果(空==子){
分=(按钮)findViewById(R.id.subscribe_now_btn);
}
返回子;
}
}
}
解决方案
在您的适配器试试这个:
@覆盖
公共查看getView(最终诠释的立场,观点convertView,父母的ViewGroup)
{
查看排= convertView;
YourWrapper包装= NULL;
如果(行== NULL)
{
行= inflater.inflate(R.layout.layout,父母,假);
包装=新YourWrapper(行);
row.setTag(包装);
}
其他
包装=(YourWrapper)row.getTag();
wrapper.getButton()。setOnClickListener(新OnClickListener()
{
@覆盖
公共无效的onClick(视图v)
{
// 你要什么
}
});
返回行;
}
修改
您封装类:
公共类YourWrapper
{
私人查看基地;
私人Button按钮;
公共YourWrapper(查看基地)
{
this.base =基地;
}
公共按钮getButton()
{
如果(键== NULL)
{
按钮=(按钮)base.findViewById(R.id.your_button);
}
返程(button`);
}
}
修改分=(按钮)findViewById(R.id.subscribe_now_btn);
到分=(按钮)mRow.findViewById(R.id .subscribe_now_btn);
I have a list view in my screen, every list item contains 2 text views and one button. On button click i want to take the list item selected index to get some data from a vector.
This is my List Custom Adapter.But i don't know how to do that.
private class CustomAdapter extends ArrayAdapter<ServicesItems> {
public CustomAdapter(Context context, int resource,
int textViewResourceId, List<ServicesItems> objects) {
super(context, resource, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
TextView item = null;
TextView description = null;
Button subNowBtn;
ServicesItems ii = getItem(position);
if (null == convertView) {
convertView = mInflater.inflate(
R.layout.list_of_servics_item_2, null);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
}
holder = (ViewHolder) convertView.getTag();
// cat_name = holder.gettitle();
Resources resources = getResources();
ServicesItems bean1 = (ServicesItems) servicesVector
.elementAt(position);
String cat_name_str = bean1.getService_name().toString();
String descreption = bean1.getDescription().toString();
item = holder.getItem();
item.setText(bean1.getDescription());
description = holder.getDescription();
description.setText(bean1.getService_name());
subNowBtn=holder.getSubButton();
return convertView;
}
private class ViewHolder {
private View mRow;
private TextView description = null;
private TextView item = null;
private Button sub = null;
public ViewHolder(View row) {
mRow = row;
}
public TextView getDescription() {
if (null == description) {
description = (TextView) mRow
.findViewById(R.id.category_tv);
}
return description;
}
public TextView getItem() {
if (null == item) {
item = (TextView)
mRow.findViewById(R.id.descreption_tv);
}
return item;
}
public Button getSubButton(){
if(null==sub){
sub=(Button)findViewById(R.id.subscribe_now_btn);
}
return sub;
}
}
}
解决方案
In your Adapter try this:
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
View row = convertView;
YourWrapper wrapper = null;
if (row == null)
{
row = inflater.inflate(R.layout.layout, parent, false);
wrapper = new YourWrapper (row);
row.setTag(wrapper);
}
else
wrapper = (YourWrapper) row.getTag();
wrapper.getButton().setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// What you want
}
});
return row;
}
EDIT
Your wrapper class:
public class YourWrapper
{
private View base;
private Button button;
public YourWrapper(View base)
{
this.base = base;
}
public Button getButton()
{
if (button == null)
{
button = (Button) base.findViewById(R.id.your_button);
}
return (button`);
}
}
Change sub=(Button)findViewById(R.id.subscribe_now_btn);
into sub=(Button) mRow.findViewById(R.id.subscribe_now_btn);
这篇关于设置的OnClick监听器上的按钮,里面的android列表视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文