单击 android 中每个列表项中的删除按钮时如何删除列表视图项

How to delete listview item when click delete button in each List item in android

我想在每个列表项中单击删除文本时删除列表项。我尝试了不同的方法,但对我来说没有任何效果

我有 MainActivity、自定义数组适配器和列表视图 XML 文件。当我点击删除文本视图时,我的所有列表行都有一个删除文本视图,需要从列表中删除特定项目。

这是我的代码:

MainActivity.java

public class MainActivity extends Activity {
    ListView listView;
    ImageButton delete;
    private List<ListItems> listItems = new ArrayList<ListItems>();
    ArrayAdapter arrayAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView) findViewById(R.id.list);
        //assigning another class list to listItems
        listItems = DataPopulate.data;
        arrayAdapter = ArrayAdapter(this, listItems);
    }
}

ArrayAdapter.java

public class ArrayAdapter extends BaseAdapter {
    private static final String TAG = ArrayAdapter.class.getSimpleName();
    TextView title;
    TextView count;
    static TextView delete;
    private Activity activity;
    private LayoutInflater inflater;
    private List<ListItems> listItems;


    public ArrayAdapter(Activity activity, List<ListtItems> listItems) {
        this.activity = activity;
        this.listItems = listItems;
    }

    @Override
    public int getCount() {
        return listItems.size();
    }

    @Override
    public Object getItem(int location) {
        return listItems.get(location);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

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

        if (inflater == null)
            inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if (convertView == null)
            convertView = inflater.inflate(R.layout.order_list, null);

        title = (TextView) convertView.findViewById(R.id.title);
        count = (TextView) convertView.findViewById(R.id.count);
        delete = (TextView) convertView.findViewById(R.id.delete);
        ListItems c = listItems.get(position);
        title.setText(c.getName());
        count.setText(String.valueOf(c.getItemCount()));

        return convertView;
    }
}

order_list.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="8dp" >

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="@dimen/title"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/count"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
      android:layout_toRightOf="@+id/title"
        />

    <TextView
        android:id="@+id/delete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="cancel"
        android:layout_toRightOf="@id/price"/>

</RelativeLayout>

您只需要从 ArrayList 中删除项目,这将填充您的适配器。然后只需在您的适配器上使用它:

notifyDataSetChanged()

尝试

convertView.setOnClickListener(new OnClickListener () {

    @Override
    public void onClick(View v) {
        listItems.remove(position) ;
        notifyDataSetChanged() ;
   } 
});