HI я изменяю состояние приложения, а затем я хочу перезагрузить активность, чтобы отразить изменение, пытающееся использовать notifyDataSetChanged, но не работающее ... в основном, когда я выбираю опцию "удалить", операция удалить работает, но Dont обновить курсор адаптер ContextMenu на ListActivity:Я хочу изменить состояние приложения, а затем перезагрузить операцию, чтобы отразить изменение.
public boolean onContextItemSelected(MenuItem item)
{
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
int index = info.position;
View view = info.targetView;
long id = info.id;
if(item.getItemId()==R.id.edit){
Intent i=new Intent(ProjetoProTelefoneActivity.this, DetailForm.class);
i.putExtra(ID_EXTRA, String.valueOf(id));
startActivity(i);
return(true);
}
else if(item.getItemId()==R.id.remove){
Intent i=new Intent(ProjetoProTelefoneActivity.this, DeleteItemList.class);
i.putExtra(ID_EXTRA, String.valueOf(id));
startActivity(i);
ListView listView = getListView();
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
return(true);
}
return super.onContextItemSelected(item);
}
Мои initLIst():
private void initList(){
if(modelo!=null){
stopManagingCursor(modelo);
modelo.close();
}
modelo =helper.getAll(prefs.getString("sort_order","nome DESC"));
startManagingCursor(modelo);
adapter = new RestaurantAdapter(modelo);
setListAdapter(adapter);
}
DeleteItemList:
public class DeleteItemList extends Activity{
RestauranteHelper helper = null;
String restauranteId= null;
public void onCreate(Bundle savedInstaceState){
super.onCreate(savedInstaceState);
helper= new RestauranteHelper(this);
restauranteId=getIntent().getStringExtra(ProjetoProTelefoneActivity.ID_EXTRA);
helper.delete(restauranteId);
finish();
}
public void onDestroy(){
super.onDestroy();
helper.close();
}
}
Мой RestauranteHelper.delete:
public void delete(String id){
String[] args = {id};
getWritableDatabase().delete("restaurantes", "_ID =?", args);
}
Класс restauranteAdapter:
class RestaurantAdapter extends CursorAdapter {
RestaurantAdapter(Cursor c) {
super(ProjetoProTelefoneActivity.this, c);
}
public void bindView(View row, Context ctxt,
Cursor c) {
RestaurantHolder holder=(RestaurantHolder)row.getTag();
holder.populateFrom(c, helper);
}
public View newView(Context ctxt, Cursor c,
ViewGroup parent) {
LayoutInflater inflater=getLayoutInflater();
View row=inflater.inflate(R.layout.row, parent, false);
RestaurantHolder holder=new RestaurantHolder(row);
row.setTag(holder);
return(row);
}
}
у меня есть другая тема, но все я судимое сделать там не работало ... ИДК, что делать, операции удаления, butdont обновить адаптер курсора
После того как я исправлю код onContextItem Выбранный выглядит, и им больше не пользоваться DeleteItemList, так как вы можете видеть:
public boolean onContextItemSelected(MenuItem item)
{
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
int index = info.position;
View view = info.targetView;
long id = info.id;
if(item.getItemId()==R.id.edit){
Intent i=new Intent(ProjetoProTelefoneActivity.this, DetailForm.class);
i.putExtra(ID_EXTRA, String.valueOf(id));
startActivity(i);
return(true);
}
else if(item.getItemId()==R.id.remove){
restauranteId=String.valueOf(id);
//Toast.makeText(this, String.valueOf(id), Toast.LENGTH_LONG).show();
helper.delete(restauranteId);
initList();
return(true);
}
return super.onContextItemSelected(item);
}
Спасибо за все!
его трудно понять, что я здесь, я изучаю приложение андроидов своим я в течение 3 дней, поэтому я проверю этот учебник и посмотреть, что произойдет, спасибо –
Лучший совет, который я могу вам дать, - это придерживаться его, и оставьте его, если его слишком много, чтобы принять его прямо сейчас. Я помню, когда я впервые начал много вещей, потому что вы не одиноки. Но теперь я оглядываюсь на многие из этих вещей, и все это соединяется вместе. Поэтому придерживайтесь этого! :) –
ну спасибо за помощь, я решил не использовать deleteItemList, как и предлагаю, и я изменил код, как вы можете видеть на моем edit = D –