2016-11-01 17 views
2

リストに項目を追加すると(テキストの編集とボタンの追加を使用して)動的に拡大するリストがあります。完璧に私は追加と削除しています。しかし、他の部分では、私はそれがリストから項目を削除する場合は、リストを並べ替えると何かを検索するテキストウォッチャーでテキストを追加しました私もnotifyDataSetChanged()を呼び出しています。 ここにコードがあります。動的リストとテキストウォッチャーを使用しているときに通知されたデータセットが変更されない

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mArrayList = new ArrayList(); 
    mEtSearch = (EditText) findViewById(R.id.et_search); 
    mEtText = (EditText) findViewById(R.id.et_item_to_add); 
    mBtnAdd = (Button) findViewById(R.id.btn_add); 
    mBtnDelete = (Button) findViewById(R.id.btn_delete); 
    mLvItems = (ListView) findViewById(R.id.lv_itmes); 
    mBtnAdd.setOnClickListener(this); 
    mBtnDelete.setOnClickListener(this); 
    mAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, mArrayList); 
    mLvItems.setAdapter(mAdapter); 
    mEtSearch.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      String text = mEtSearch.getText().toString().toLowerCase(Locale.getDefault()); 
      mAdapter.getFilter().filter(text); 

     } 
    }); 
} 

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.btn_add: 
      if (mEtText.getText().toString().isEmpty()) { 
       Toast.makeText(this, "add something to list ", Toast.LENGTH_LONG).show(); 
      } else { 
       mArrayList.add(mEtText.getText().toString()); 
       mAdapter.notifyDataSetChanged(); 
       mEtText.setText(""); 
      } 
      break; 
     case R.id.btn_delete: 
      SparseBooleanArray checkedItemPositions = mLvItems.getCheckedItemPositions(); 
      int itemCount = mLvItems.getCount(); 

      for (int i = itemCount - 1; i >= 0; i--) { 
       if (checkedItemPositions.get(i)) { 
        mArrayList.remove(i);//This also I tried 
        // mAdapter.remove(mArrayList.get(i));//This also I tried 
       } 
      } 
      checkedItemPositions.clear(); 
      mAdapter.notifyDataSetChanged(); 
      break; 

    } 

} 
+0

テキストウォッチャーの編集テキストにテキストを入れてリストにテキストを追加しようとすると、そのテキストをリストに追加できますが、UIでは表示できません。私はリストから何かを削除しようとする私はリストから項目を削除することができますが、UIで見ることができません。 –

答えて

0

現在のリストの変更が完了したら、リストを再読み込みしてみてください。

関連する問題