在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中使用上一个和下一个按钮打开不同的pdf文件?
通过单击 Android Studio 中的按钮在 webview 中获取随机 Youtube 视频