java - 从左向右滑动从 ListView 中删除项目

标签 java android listview android-listview swipe

我想弄清楚如何在我从左向右滑动时从 ListView 中删除一个项目。我将在下面附上我的代码。截至目前,我正在使用 SQLite DB 并创建了我自己的自定义 ListView 适配器。我正在创建一个简单的列表来删除和添加项目。我有添加项目的工作,现在我只需要弄清楚如何从左向右滑动时从 ListView 中删除一个项目。我的想法是,当您从左向右滑动时,会出现一个显示“删除”的按钮。用户可以点击它从列表中删除项目。

main_menu_activity.java

public class main_menu_activity extends Activity
{
    DatabaseHandler db;
    ArrayList<Account> account_details;
    ListView accountList;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_menu_activity);

        accountList = (ListView)findViewById(R.id.accountListView);

        // Initiates SQLite Database
        db = new DatabaseHandler(getApplicationContext());
        // Displays ListView
        displayListView();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_menu_activity, menu);

        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        // take appropriate action for each action item clicked
        switch(item.getItemId())
        {
            case R.id.action_add_new:
            {
                // perform add new item action
                AlertDialog.Builder alert = new AlertDialog.Builder(this);
                alert.setMessage("Enter account details:");

                LinearLayout layout = new LinearLayout(this);
                layout.setOrientation(LinearLayout.VERTICAL);

                // Set an EditText view
                final EditText input = new EditText(this);
                input.setHint("Account Name");
                layout.addView(input);

                final EditText input2 = new EditText(this);
                input2.setHint("Account Balance");
                layout.addView(input2);

                alert.setView(layout);

                alert.setPositiveButton("Save", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i)
                    {
                        if (input.getText().toString() != null)
                        {
                            // Create empty Account
                            Account temp_account;
                            temp_account = new Account();

                            // Save information to SQLiteDatabase
                            temp_account.setAccountName(input.getText().toString());
                            temp_account.setAccountBalance(Double.parseDouble(input2.getText().toString()));

                            // Add temp account
                            db.addAccount(temp_account);
                            displayListView();
                        }
                        else
                        {    
                            dialogInterface.cancel();
                        }
                    }
                });
                alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
                {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i)
                    {
                        // cancel
                        dialogInterface.cancel();
                    }
                });

                alert.show();
                return true;
            }
            default:
            {
                return super.onOptionsItemSelected(item);
            }
        }
    }

    // DISPLAY ACCOUNT LISTVIEW //
    public void displayListView()
    {
        account_details = new ArrayList<Account>();
        account_details = db.getAllAccounts();
        accountList.setAdapter(new ListViewBaseAdapter(account_details,this));
    }
}

ListView .xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="6dip" >

<TextView
    android:id="@+id/account_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:textColor="#00628B"
    android:textSize="22dp"
    android:textStyle="bold"/>

<TextView
    android:id="@+id/account_balance"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:textColor="#00628B"
    android:textSize="22dp"/>

</RelativeLayout>

activity_main_menu_activity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#E6E6DC">

<!---
    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:dividerHeight="0.2dp"
        andrivider="#000"/>
-->
<ListView
    android:id="@+id/accountListView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:dividerHeight="0.1dp"
    android:divider="#81A594"/>

</LinearLayout>

最佳答案

关于java - 从左向右滑动从 ListView 中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21937327/

相关文章:

java - 测试抽象类中的方法一次,而不是每次实现

java - Java 包是否应该抛出其依赖模块的已检查异常

android - 如何使用 nativedroid2 库在屏幕右上角创建一个 float 按钮?

android - xml解析中如何解析属性中的值

java - 尝试运行Stanford Core NLP服务器导致 'could not find or load main class'错误

java - 如何以编程方式使用 Intellij IDEA 代码格式化程序?

android - 无法运行 native android 安装程序

java - 发送短信时,应用程序在 getContentResolver().query(...) 上停止

.net - 如果单击复选框,则仅更改ListViewItem的“已检查”状态

java - Android ListView自定义行布局