San*_*oid 5 android button listactivity android-listview
在app中我有一个Listactivity,它有一个带TextView和Button的适配器(标记为delete).现在我想删除相应的Button点击项目.请检查代码并建议???? `
public class MySimpleArrayAdapter extends ArrayAdapter<String> implements OnClickListener {
private final Activity context;
private final String[] names;
private Button deleteButton= null;
public MySimpleArrayAdapter(Activity context, String[] names) {
super (context, R.layout.imagelistlayout, names);
this.context = context;
this.names = names;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View rowView = inflater.inflate(R.layout.imagelistlayout, null, true);
deleteButton= (Button)rowView.findViewById(R.id.delete_bn);
deleteButton.setTag(position);
TextView textView = (TextView) rowView.findViewById(R.id.label);
textView.setText(names[position]);
deleteButton.setOnClickListener(this);
return rowView;
}
@Override
public void onClick(View convertView) {
System.out.println(deleteButton.getTag());
}
}`
Run Code Online (Sandbox Code Playgroud)
我想知道如何删除已单击按钮的项目.
您应该尝试不在getView方法中对onClick处理程序进行硬编码,而是查看如何将onClick方法分配给listview.在这里,您可以从活动中分配方法,这也是您应该在此处执行的操作.
在您的适配器中创建一个名为setOnXXXClickListener的方法
public void setOnXXXClickListener(final OnClickListener onClickListener) {
this.onXXXClickListener = onClickListener;
}
Run Code Online (Sandbox Code Playgroud)
并在你的getView中将此分配给按钮,就像这样
viewHolder.xxx.setOnClickListener(this.onXXXClickListener);
Run Code Online (Sandbox Code Playgroud)
从您的Activity中,您可以像这样分配onClick方法
this.adapter.setOnXXXClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "OnXXXClickListener");
}
});
Run Code Online (Sandbox Code Playgroud)
只需处理getview中的点击监听器,您可以使用findviewbyid找到该按钮
这将处理当前行按钮单击
public class MySimpleArrayAdapter extends ArrayAdapter<String> implements OnClickListener {
private final Activity context;
private final String[] names;
private Button deleteButton= null;
public MySimpleArrayAdapter(Activity context, String[] names) {
super (context, R.layout.imagelistlayout, names);
this.context = context;
this.names = names;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View rowView = inflater.inflate(R.layout.imagelistlayout, null, true);
deleteButton= (Button)rowView.findViewById(R.id.delete_bn);
deleteButton.setTag(position);
TextView textView = (TextView) rowView.findViewById(R.id.label);
textView.setText(names[position]);
deleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
//try to hide textview or something it may help
}
});
return rowView;
}
}`
Run Code Online (Sandbox Code Playgroud)