简体   繁体   English

在android studio中删除一个带有按钮的列表视图项目

[英]Delete a listview item with a button in it self in android studio

As I am very new to java pls help me on this.由于我对 java 很陌生,请帮助我解决这个问题。 I have a custom list view in my main activity and a Custom adapter with it.我的主要活动中有一个自定义列表视图,还有一个自定义适配器。 In my every list item there is a delete button that should delete that item when it clicked.在我的每个列表项中,都有一个删除按钮,单击该按钮时应删除该项目。 I can not remove data from my arraylist when i am inside my custom adapter.当我在我的自定义适配器中时,我无法从我的数组列表中删除数据。 Pls helm me in coding this delete button.请指导我编写此删除按钮的代码。

MainActivity.java主活动.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;
    }
}

Please first try to remove object from list by using the position of item with check the validation with list size and then call notifyItemadapter to update the list view.请首先尝试使用项目的位置从列表中删除对象并检查列表大小的验证,然后调用 notifyItemadapter 更新列表视图。

Use ViewHolder class for all view like textview, button etc. And initialize them inside the condition将 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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM