长按列表视图后的操作(Android Studio)

Posted

技术标签:

【中文标题】长按列表视图后的操作(Android Studio)【英文标题】:Action after long click on listview (Android Studio) 【发布时间】:2015-10-31 23:21:01 【问题描述】:

我有一个从 sqlite 数据库中获取数据的 ListView。 现在,我想设置当我长按列表视图中的某个项目时,我可以删除或更新该项目。

我成功执行了 ContextMenu,但我不知道在单击更新或删除后如何进行操作。

DataListActivity.java - 列表视图的活动

public class DataListActivity extends ActionBarActivity 
    ListView listView;
    SQLiteDatabase sqLiteDatabase;
    CourseDbHelper courseDbHelper;
    Cursor cursor;
    ListDataAdaptar listDataAdaptar;
    @Override
    protected void onCreate(Bundle savedInstanceState) 

        super.onCreate(savedInstanceState);
        setContentView(R.layout.data_list_layout);
        listView = (ListView) findViewById(R.id.list_view);
        listDataAdaptar = new ListDataAdaptar(getApplicationContext(),R.layout.row_layout);
        listView.setAdapter(listDataAdaptar);
        registerForContextMenu(listView);
        courseDbHelper = new CourseDbHelper(getApplicationContext());
        sqLiteDatabase = courseDbHelper.getReadableDatabase();
        cursor = courseDbHelper.getInformation(sqLiteDatabase);
        registerForContextMenu(listView);
        if (!cursor.moveToFirst())
        
        else 
            do 
                String year,semester,course,points,grade;
                year = cursor.getString(0);
                semester = cursor.getString(1);
                course = cursor.getString(2);
                points = cursor.getString(3);
                grade = cursor.getString(4);
                DataProvider dataProvider  = new DataProvider(year,semester,course,points,grade);
                listDataAdaptar.add(dataProvider);
            
            while (cursor.moveToNext());
        
    
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) 
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_data_list, menu);
    

    

menu_data_list.xml

 <menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.ido.grades.DataListActivity">
    <item android:id="@+id/update_item" android:title="@string/update"
        android:orderInCategory="100" app:showAsAction="never" />
    <item android:id="@+id/delete_item" android:title="@string/delete"
        android:orderInCategory="100" app:showAsAction="never" />
</menu>

图片:http://i.stack.imgur.com/eCUzQ.png

【问题讨论】:

覆盖方法onOptionsItemSelected,然后您可以使用switch case删除或更新适配器项。这是链接:developer.android.com/guide/topics/ui/… 【参考方案1】:

感谢维卡斯, 我添加了该函数及其工作(而不是 onOptionsItemSelected 我写了 onContextItemSelected):

 public boolean onContextItemSelected(MenuItem item) 
        switch (item.getItemId()) 
            case R.id.update_item:
                Toast.makeText(this,"update",Toast.LENGTH_LONG).show();
                return true;
            case R.id.delete_item:
                Toast.makeText(this,"delete",Toast.LENGTH_LONG).show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        
    

【讨论】:

这是你的问题,接受你的回答就好了——你看,你知道它有效;你不;-)

以上是关于长按列表视图后的操作(Android Studio)的主要内容,如果未能解决你的问题,请参考以下文章

双击而不是长按 Android 上下文菜单

如何在列表视图上触发正确的 Longclick 事件

分配列表视图 ID 错误 - Android Studio

如何知道单击项目在列表视图中相对于android中的屏幕的y位置

Android Studio [RecyclerView/列表视图]

Android Studio:如何将列表视图中的项目添加到列表视图 onClick