java - 如何知道在哪个项目中单击了按钮

标签 java android layout

到目前为止,我有一个带有自定义适配器的 ListView ,列表中的每个项目都有一个按钮。 我真的很困惑;我正在尝试执行以下操作:

当用户单击列表中项目中的按钮(删除按钮)时,我想知道单击了哪个项目按钮,以便我知道要删除哪个项目 - 我该如何实现?我看过一些关于设置标签的内容,但我仍然很迷茫。

我还尝试从我的主要 Activity 的列表布局中访问该按钮,但无法引用它。

请给我详细说明如何做我想做的事情,谢谢。

添加适配器代码:

public class LocationAdapter extends BaseAdapter{
String [] n;
Context context;
String[] a;

private static LayoutInflater inflater=null;
public LocationAdapter(MainActivity mainActivity, String[] names, String[] addresses) {
    // TODO Auto-generated constructor stub
    n=names;
    context=mainActivity;
    a=addresses;
    inflater = ( LayoutInflater )context.
            getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
    // TODO Auto-generated method stub
    return n.length;
}

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return position;
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}

public class Holder
{
    TextView name;
    TextView address;
    ImageButton ib;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    Holder holder=new Holder();
    View rowView;
    rowView = inflater.inflate(R.layout.rowlayout2, null);
    holder.name =(TextView) rowView.findViewById(R.id.EditTextName);
    holder.address =(TextView) rowView.findViewById(R.id.EditTextAddress);
    holder.ib = (ImageButton) rowView.findViewById(R.id.Delete);
    holder.name.setText(n[position]);
    holder.address.setText(a[position]);
    holder.ib.setTag(convertView);
    rowView.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Toast.makeText(context, "You Clicked "+n[position], Toast.LENGTH_LONG).show();
        }

    });
    return rowView;
}

}

最佳答案

为您的删除按钮实现一个OnClickListener

当点击delete按钮时,删除数据源中position的行,然后调用notifyDataSetChanged()

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    Holder holder=new Holder();
    View rowView;
    rowView = inflater.inflate(R.layout.rowlayout2, null);
    holder.name =(TextView) rowView.findViewById(R.id.EditTextName);
    holder.address =(TextView) rowView.findViewById(R.id.EditTextAddress);
    holder.ib = (ImageButton) rowView.findViewById(R.id.Delete);
    holder.name.setText(n[position]);
    holder.address.setText(a[position]);
    holder.ib.setTag(convertView);

    //Add this for on-click of delete button
    holder.ib.setOnClickListener(new OnClickListener(){
         //Delete the row in your data source specified at position

    });

    rowView.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Toast.makeText(context, "You Clicked "+n[position], Toast.LENGTH_LONG).show();
        }

    });
    return rowView;
}

关于java - 如何知道在哪个项目中单击了按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29813126/

相关文章:

java - 如何填充包信息页面(package-info.java)上的类摘要字段?

java - 了解 Fastutil 内部的资源

java - SSLConnectionSocketFactory 始终返回 400(2 路 ssl 客户端证书)未收到证书

左侧的 Android CheckedTextView 复选框

java - 找不到合适的驱动程序 Postgres JDBC

android - 应用程序适用于 android 7 和 8 但不适用于 android 5 和 6

android - 如何从 spotify [身份验证库] [spotify-android-auth-1.0] 注销

java - 用布局替换 fragment

java - Swing 中的流布局

css - DIV 与表格或 CSS 与愚蠢