Действие после долгого нажатия на список (Android Studio)

У меня есть ListView, который берет данные из базы данных sqlite. Теперь я хочу установить, когда я долго нажимаю на какой-либо элемент в списке, я могу удалить или обновить этот элемент.

Мне удалось сделать 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


person Idon89    schedule 08.08.2015    source источник
comment
Переопределите метод onOptionsItemSelected, после чего вы сможете удалить или обновить элемент адаптера с помощью переключателя. Вот ссылка: developer.android.com/guide/topics/ui/   -  person Vikas Patidar    schedule 08.08.2015


Ответы (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);
        }
    }
person Idon89    schedule 08.08.2015
comment
Это ваш вопрос, тогда было бы неплохо принять ваш ответ - вы видите, вы знаете, что это работает; не так ли ;-) - person GhostCat; 21.03.2017