Как получить данные из списка в контекстное меню?

1

на самом деле у меня возникла проблема при создании моего проекта. У меня есть один просмотр списка на одном экране, где данные поступают из базы данных и привязаны к нему. Я создал здесь одно контекстное меню с двумя меню (view & delete). Проблема, с которой я столкнулся, - это когда я создаю контекстное меню с длинным кликом и когда я нажимаю на любое из меню, оно переходит на другой экран. здесь я хочу, чтобы данные списка (которые были нажаты) перешли на следующий экран. Я не понимаю. Это следующий код...

Main.java

     /*******some code****/

    DbHandler dbh=new DbHandler(GroupName.this);
    ast=dbh.selectgroupnam(s); 
       //here "ast" is of ArrayList defined globally        
    ArrayAdapter<String> adp=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,ast);
    lv.setAdapter(adp);
    registerForContextMenu(lv); 

    lv.setOnItemClickListener(new OnItemClickListener(){
    @Override
    public void onItemClick(AdapterView<?> arg0, View v, int p, long arg3) {
    // TODO Auto-generated method stub  
     TextView tv=(TextView)v;
     String gnam=tv.getText().toString();

}});

  }//on create

   //context menu code

   @Override
   public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    // TODO Auto-generated method stub
    super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(0, v.getId(), 0, "View");  
        menu.add(0, v.getId(), 0, "Delete");    
}

@Override
public boolean onContextItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    Toast.makeText(getApplicationContext(), "group name" + gnam,30).show();
    if (item.getTitle() == "Delete") {
        Toast.makeText(getApplicationContext(), "selected group" + gnam, 30).show();
    startActivity(new Intent(GroupName.this,GroupEdit.class));
    }
    else 
    {
    startActivity(new Intent(GroupName.this,GroupEdit.class));
    }
    return super.onContextItemSelected(item);
}

В соответствии с приведенным ниже кодом, как получить данные просмотра списка (который был долго нажат для контекстного меню) и передать данные в GroupEdit.class.

Ожидание ответа......

Теги:
contextmenu
android-listview

1 ответ

2
Лучший ответ

Итак, вы начинаете активность startActivity(new Intent(GroupName.this,GroupEdit.class)) но любые данные, которые вы добавляете к намерениям. Поэтому попробуйте с помощью putExtra(<key>,<data>) или если вы хотите использовать Bundle так putExtras(<bundle>)

Вы должны это сделать так:

Intent i = new Intent(GroupName.this,GroupEdit.class);
i.putExtra("key", <data>);
startActivity(i);

Затем в новом Activity GroupEdit вы получите эти данные с getIntent() метода getIntent() который возвращает намерение, которое запустило эту getExtras() и getExtras() с ней вы извлекаете карту расширенных данных из намерения.

Итак, в GroupEdit String text = getIntent().getExtras().getString("keyOfField")

Из вас будет использоваться Bundle

Intent i = new Intent(GroupName.this,GroupEdit.class);
    i.putExtras(bundle);
    startActivity(i);

в GroupEdit вы извлекаете данные с данными Bundle data = getIntent().getExtras()

С уважением

Ещё вопросы

Сообщество Overcoder
Наверх
Меню