在 android studio 中自行删除带有按钮的列表视图项

Delete a listview item with a button in it self in android studio

因为我是 java 的新手,请帮助我解决这个问题。我的主 activity 中有一个自定义列表视图和一个带有它的自定义适配器。在我的每个列表项中都有一个删除按钮,单击该按钮应删除该项目。当我在我的自定义适配器中时,我无法从我的数组列表中删除数据。请指导我编写此删除按钮的代码。

MainActivity.java


public class MainActivity extends AppCompatActivity {

    EditText getItem;
    Button AddButton;
    Button DellButton;

    public static ArrayList<String> myData = new ArrayList<String>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ListView list = (ListView)
findViewById(R.id.listView);
        getItem = (EditText) findViewById(R.id.newItem);
        AddButton = (Button) findViewById(R.id.AddButton);
       
        MyAdapter adapter = new MyAdapter(this, myData);

        list.setAdapter(adapter);

        AddButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String result = getItem.getText().toString();
                myData.add(result);
                adapter.notifyDataSetChanged();
            }
        });       
    }

MyAdapter.java

public class MyAdapter extends ArrayAdapter<String> {

       public MyAdapter(Context context, ArrayList<String> records) {

        super(context, 0, records);
    }

    @Override

    public View getView(int position, View convertView, ViewGroup parent) {

        String item = getItem(position);

        if (convertView == null) {

            convertView = LayoutInflater.from(getContext()).inflate(R.layout.listview_custom, parent, false);
        }

        final TextView lst_txt = (TextView) convertView.findViewById(R.id.list_Txt2);

        Button plusbut = (Button) convertView.findViewById(R.id.plusbut);

        Button minusbut = (Button) convertView.findViewById(R.id.minusbut);

        final TextView sum = (TextView) convertView.findViewById(R.id.sum);

        Button cal = (Button) convertView.findViewById(R.id.calButton);

        Button delete = (Button) convertView.findViewById(R.id.btnDel);

        lst_txt.setText(item);

        minusbut.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                int sumAll = Integer.parseInt(sum.getText().toString());
                int sum1 = sumAll - 1;

                sum.setText(String.valueOf(sum1));

            }
        });

        plusbut.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                int sumAll = Integer.parseInt(sum.getText().toString());
                int sum1 = sumAll + 1;
                sum.setText(String.valueOf(sum1));

           }
        });

        cal.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                String s = sum.getText().toString();

                Intent intent = new Intent(getContext(), calll.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                intent.putExtra("sumFL", s);
                getContext().startActivity(intent);

            }
        });             
        return convertView;
    }
}

请先尝试使用项目的位置从列表中删除对象并检查列表大小的验证,然后调用 notifyItemadapter 更新列表视图。

对文本视图、按钮等所有视图使用 ViewHolder class,并在条件内初始化它们

if(convert view==null){
     Initialize holder object here and
     Inflate your layout and
    
     Initialize button like
     holder.deletebutton = convert view.findviewbyid from xml
     
     
     settag(holder)
} 
Again get the holdet using the gettag in 
else{
   //Here
}

Put All click event and text update etc. Outside of above condition

holder.deletbutton.setonclicklistener{
    
     int pos = view.getag
     list.remove(pos)
     Notifyadapter here
 
}

holder.deletebutton.settag(position)