在android studio中删除一个带有按钮的listview项目

Posted

技术标签:

【中文标题】在android studio中删除一个带有按钮的listview项目【英文标题】:Delete a listview item with a button in it self in android studio 【发布时间】:2021-09-28 02:16:13 【问题描述】:

由于我对 java 很陌生,请帮助我。我的主要活动中有一个自定义列表视图和一个自定义适配器。在我的每个列表项中都有一个删除按钮,当它单击时应该删除该项目。当我在我的自定义适配器中时,我无法从我的数组列表中删除数据。请指导我编写这个删除按钮的代码。

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;
    

【问题讨论】:

【参考方案1】:

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

对所有视图(如文本视图、按钮等)使用 ViewHolder 类。并在条件内初始化它们

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)

【讨论】:

非常感谢。我会试试的。

以上是关于在android studio中删除一个带有按钮的listview项目的主要内容,如果未能解决你的问题,请参考以下文章

我的按钮未显示在 Android Studio 中

在android studio中使用上一个和下一个按钮打开不同的pdf文件?

android studio下载的虚拟机怎么删除?

通过单击 Android Studio 中的按钮在 webview 中获取随机 Youtube 视频

如何在 Textview-android studio 布局编辑器中添加按钮

Android Studio 删除多余的虚拟设备(Virtual Device)