Android 如何访问不同列表视图行中的按钮?
我试图通过单击按钮来更改listview行中按钮的颜色。这里我有一个由25行组成的列表视图,每行包含一个按钮。我使用了listview的自定义适配器在每一行中放置按钮。我想知道如何做以下事情:Android 如何访问不同列表视图行中的按钮?,android,listview,view,custom-adapter,Android,Listview,View,Custom Adapter,我试图通过单击按钮来更改listview行中按钮的颜色。这里我有一个由25行组成的列表视图,每行包含一个按钮。我使用了listview的自定义适配器在每一行中放置按钮。我想知道如何做以下事情: 点击一个按钮,它的颜色就会改变 在步骤(1)之后,onClickListener还将listview中剩余按钮的颜色更改为正常 以上两个步骤应适用于所有按钮,这意味着如果单击任何按钮,则应将其着色,其余按钮将恢复正常 listview类似于 按钮1 按钮2 按钮3 按钮4您必须从适配器访问您的按钮
按钮1
按钮2
按钮3
按钮4您必须从适配器访问您的按钮。跟随它-
public class TestAdapter extends BaseAdapter {
private Context ctx;
private List<TestList> list;
public TestAdapter(Context ctx, List<TestList> list){
this.ctx = ctx;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public TestList getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater layoutInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(R.layout.layout_item, parent, false);
}
Button button = (Button) convertView.findViewById(R.id.button);
button.setText(list.get(position));
return convertView;
}
}
公共类TestAdapter扩展了BaseAdapter{
私有上下文ctx;
私人名单;
公共测试适配器(上下文ctx,列表){
this.ctx=ctx;
this.list=列表;
}
@凌驾
public int getCount(){
返回list.size();
}
@凌驾
公共测试列表getItem(int位置){
返回列表。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
LayoutInflater LayoutInflater=(LayoutInflater)ctx.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
convertView=LayoutFlater.充气(R.layout.layout_项,父项,false);
}
Button Button=(Button)convertView.findViewById(R.id.Button);
button.setText(list.get(position));
返回视图;
}
}
在自定义适配器中使用onclick listener for按钮
public class CustomAdapter extends BaseAdapter {
private Context ctx;
private List<CustomList> list;
public CustomAdapter(Context ctx, List<CustomList> list){
this.ctx = ctx;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public CustomList getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater layoutInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(R.layout.layout_item, parent, false);
}
Button button = (Button) convertView.findViewById(R.id.button);
button.setText(list.get(position));
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
\\change color here
}
});
return convertView;
}
}
公共类CustomAdapter扩展了BaseAdapter{
私有上下文ctx;
私人名单;
公共CustomAdapter(上下文ctx,列表){
this.ctx=ctx;
this.list=列表;
}
@凌驾
public int getCount(){
返回list.size();
}
@凌驾
公共CustomList getItem(内部位置){
返回列表。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
LayoutInflater LayoutInflater=(LayoutInflater)ctx.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
convertView=LayoutFlater.充气(R.layout.layout_项,父项,false);
}
Button Button=(Button)convertView.findViewById(R.id.Button);
button.setText(list.get(position));
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
\\在这里换颜色
}
});
返回视图;
}
}
添加到目前为止的工作!请发布您的代码请显示您的适配器我有类似的适配器,但它只会更改单击按钮的颜色,但不会使其他按钮恢复正常。