2013-10-10 4 views
0

Я пытаюсь создать динамический список. Я могу добавить элемент, но я не могу удалить его прямо сейчас. Код на самом деле очень прост, и каждое руководство, которое я видел, слишком сложно для меня и моего кода. Я хочу добавить что-то простое в свой MainActivity, чтобы удалить элемент selceted. Меня не волнует, каким образом, проведите как gmail или щелчком или любым другим способом. Мне просто нужен простой способ удалить элемент списка. Это ДеятельностьУдалить элемент из списка (проведите или щелкнуть)

public class MainActivity extends Activity { 
    private EditText etInput; 
    private Button btnAdd; 
    private ListView lvItem; 
    private ArrayList<String> itemArrey; 
    private ArrayAdapter<String> itemAdapter; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     setUpView(); 

    } 

    private void setUpView() { 
     // TODO Auto-generated method stub 
     etInput = (EditText)this.findViewById(R.id.editText_input); 
     btnAdd = (Button)this.findViewById(R.id.addbtn); 
     lvItem = (ListView)this.findViewById(R.id.listView_items); 


     itemArrey = new ArrayList<String>(); 
     itemArrey.clear(); 

     itemAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,itemArrey); 
     lvItem.setAdapter(itemAdapter); 


     btnAdd.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 

       addItemList(); 
      } 
     }); 

     etInput.setOnKeyListener(new View.OnKeyListener() { 

      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       // TODO Auto-generated method stub 

       if (keyCode == KeyEvent.KEYCODE_ENTER) { 
        addItemList(); 
       } 
       return true; 
      } 
     }); 


    } 

    protected void addItemList() { 

    if (isInputValid(etInput)) { 
     itemArrey.add(0,etInput.getText().toString()); 
     etInput.setText(""); 

     itemAdapter.notifyDataSetChanged(); 

    } 

    } 

    protected boolean isInputValid(EditText etInput2) { 
     // TODO Auto-generatd method stub 
     if (etInput2.getText().toString().trim().length()<1) { 
      etInput2.setError("Insert a value"); 
      return false; 
     } else { 
      return true; 
     } 

    } 
} 

Возможно ли вставить часть кода для удаления элемента внутри кода моей деятельности? Благодаря

ответ

3

попробовать это, в то время ListView элемент долго ClickListener вы можете сделать это

lvItem.setOnItemLongClickListener(new OnItemLongClickListener() { 

     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View v, 
       int position, long id) { 
      // TODO Auto-generated method stub 
           AlertDialog.Builder adb = new AlertDialog.Builder(
        YourActivity.this); 
      adb.setTitle("Are you sure want to delete this item"); 
      adb.setPositiveButton("Yes", 
        new DialogInterface.OnClickListener() { 

         @Override 
         public void onClick(DialogInterface dialog, 
           int which) { 
          // TODO Auto-generated method stub 
          itemArrey.remove(position); 
          itemAdapter.notifyDataSetChanged(); 


         } 
        }); 
      adb.setNegativeButton("NO", 
        new DialogInterface.OnClickListener() { 

         @Override 
         public void onClick(DialogInterface dialog, 
           int which) { 
          // TODO Auto-generated method stub 
          dialog.dismiss(); 

         } 
        }); 
      adb.show(); 

      return false; 
     } 
    }); 
+0

получите эту ошибку: 'Метод setOnLongClickListener (View.OnLongClickListener) в типе View не применим для аргументов (новый OnItemLongClickListener() {})' –

+0

извините, он работает! :) возможно добавить диалог, который говорит что-то вроде «Вы действительно хотите удалить этот элемент?» и, если да, удалите его, конечно, не –

+0

Создайте и покажите диалоговое окно в методе onItemClickListener. Чтобы получить результат диалога, вы можете сделать что-то вроде этого: http: // stackoverflow.com/questions/9776088/get-data-back-from-a-fragment-dialog-best-practices/14403830 # 14403830 Затем вы можете удалить элемент по методу возврата Диалога (если пользователь нажал кнопку yes ^^) – juanmeanwhile

0

Поместите этот метод в OnCreate:

lvItem .setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View v,int position, long id) { 
     itemArrey.remove(position); 
     itemAdapter.notifyDataSetChanged(); 
    }); 
} 
2

Это должно помочь вам.

 lv.setOnItemLongClickListener(new OnItemLongClickListener() { 

      @Override 
      public boolean onItemLongClick(AdapterView<?> arg0, View arg1, 
        int position, long id) { 

       itemArrey.remove(position); 

       itemAdapter.notifyDataSetChanged(); 

       return true; 
      } 
     }); 
+0

если это возможно, создайте диалог, подтверждающий выбор или нет, это потрясающе. или что-то вроде этого –

0

ли этот путь ..

lvItem.setOnItemLongClickListener(new OnItemLongClickListener() { 
      @Override 
      public boolean onItemLongClick(AdapterView<?> arg0, View arg1, 
        int position, long id) { 

       itemArrey.remove(position); 
       itemAdapter.notifyDataSetChanged(); 
       return true; 

      } 
     }); 
+0

, пожалуйста, попробуйте этот код и дайте мне знать. дожидаясь вашего ответа –

+0

эй мурали, пожалуйста, по крайней мере, ответьте, если вы считаете правильным –

0

Чтобы удалить элемент из списка только сделать одну вещь, получить onLongClickListener из ListView. Затем откройте контекстное меню, которое имеет два варианта

  1. Удалить

  2. Отменить

Когда пользователь выбирает первый пункт удалить его из списка. Затем вызов listadapter уведомит метод dataCetanged.

0

Try ниже код:

одним нажатием кнопки:

listview .setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v,int position, long id) { 

      showDialog(int position); 

     }); 
    } 

public void showDialog(int position){ 
    AlertDialog alertDialog; 
AlertDialog.Builder builder = new AlertDialog.Builder(BaseActivity.this); 
    alertDialog = builder.create(); 
    alertDialog.setOnDismissListener(new myOnDismissListener()); 

    alertDialog.setTitle(TITLE OF DIALOG); 
    alertDialog.setMessage(MESSAGE YOU WANT TO SHOW IN DIALOG); 
    alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 

        YOUR ARRAY.remove(position); 
        YOUR ADAPTER.notifyDataSetChanged(); 

     } 
    }); 
    alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "CANCEL", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
     } 

    }); 
    alertDialog.show(); 
} 
+0

это работает, но мне нужно сделать что-то, чтобы подтвердить или не выбрать мой выбор. Что-то вроде диалога с «cancel» или «delete». –

+0

ya, так что вы можете это сделать, ket меня отредактировать мой ответ, просто подождите минуту. –

+0

см. Мой отредактированный ответ, и если вы нашли его полезным, тогда примите и отпустите мой ответ. –