以下是一个示例代码,展示了如何在 Android 中实现长按删除 Custom ListView 中的项目,并进行更新。
首先,需要创建一个自定义的适配器(CustomAdapter)来管理 ListView 中的项目。该适配器扩展了 BaseAdapter 类,并重写了 getView() 方法来显示每个项目的布局。
public class CustomAdapter extends BaseAdapter {
private Context mContext;
private ArrayList mData;
public CustomAdapter(Context context, ArrayList data) {
mContext = context;
mData = data;
}
@Override
public int getCount() {
return mData.size();
}
@Override
public Object getItem(int position) {
return mData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(R.layout.list_item, parent, false);
holder.textView = convertView.findViewById(R.id.text_view);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final String item = mData.get(position);
holder.textView.setText(item);
convertView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// 删除项目
mData.remove(position);
notifyDataSetChanged();
return true;
}
});
return convertView;
}
private static class ViewHolder {
TextView textView;
}
}
接下来,在你的 Activity 中,你可以使用这个自定义的适配器来设置 ListView,并在长按时删除项目。
public class MainActivity extends AppCompatActivity {
private ListView mListView;
private ArrayList mData;
private CustomAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = findViewById(R.id.list_view);
// 初始化数据
mData = new ArrayList<>();
mData.add("Item 1");
mData.add("Item 2");
mData.add("Item 3");
// 设置适配器
mAdapter = new CustomAdapter(this, mData);
mListView.setAdapter(mAdapter);
}
}
在上述代码中,我们在 getView() 方法中为每个项目设置了一个长按监听器。当用户长按某个项目时,我们删除该项目,并使用 notifyDataSetChanged() 方法来更新 ListView 的显示。
请注意,上述代码仅提供了一个基本的示例,你可以根据自己的需求进行修改和扩展。