2016-12-18 8 views
0

私はAndroidのshopplinglistアプリケーションを実装していて、ユーザー入力からアイテムを取得するListViewのすべてのアイテムを削除するために2番目のボタンを作成しました。ご覧のとおり、アイテムをListViewに追加するためのアダプタを実装しました。そして私が知る限りでは、アイテムを削除するために私のアダプタに再びアクセスする必要があります。私は2番目のonClickメソッドにあり、最初のonClickメソッドで作成されたアダプタにはアクセスできません。別のメソッドからアンドロイドスタジオのアダプタにアクセスする

import java.util.ArrayList; 

public class MainActivity extends AppCompatActivity { 

Button btn; 
EditText txt; 
ListView lst; 
Button btn_delete; 
ArrayList<String> arrylist = new ArrayList<String>(); 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    btn = (Button) findViewById(R.id.btn_send); 
    txt = (EditText) findViewById(R.id.editText); 
    lst = (ListView) findViewById(R.id.list); 
    btn_delete =(Button) findViewById(R.id.button_delete); 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String getInput = txt.getText().toString(); 
      if (arrylist.contains(getInput)){ 
       Toast.makeText(getBaseContext(), getResources().getString(R.string.alreadyContains),Toast.LENGTH_LONG).show(); 
      } 
      else { 
       if (getInput == null || getInput.trim().equals("")) { 
        Toast.makeText(getBaseContext(), getResources().getString(R.string.Emptyinput), Toast.LENGTH_LONG).show(); 


       } else { 
        arrylist.add(getInput); 
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_multiple_choice, arrylist); 
        lst.setAdapter(adapter); 
        lst.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 

        ((EditText) findViewById(R.id.editText)).setText(" "); 

       } 
      } 
     } 
    }); 


     btn_delete.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if(MainActivity.this.arrylist.isEmpty()){ 
        Toast.makeText(getBaseContext(), getResources().getString(R.string.delete_isEmpty), Toast.LENGTH_LONG).show(); 
       } 
       else{ 
        lst.setAdapter(null); 
        // I need to use notifityDataSetChanged, but cannot access my adapter 


       } 
      } 
     }); 


} 

}

+0

を助けている場合、私に教えてください:ArrayAdapter tmpAdapter =(ArrayAdapter )lst.getAdapter();.このヘルプが欲しい! –

答えて

1

はこれが助けることができる次のようになります。私のコードは次のように見えます。 グローバルアダプタを宣言します(あなたが宣言したボタン、のEditText ...)、あなたが実際に(BTNクリックリスナーで)それを初期化したところ

を、それを初期化し、btn_deleteで再びそれをアクセスするために、この

if(adapter!=null) 
{ 
    adapter.notifyDataSetChanged(); 
} 
を試してみてください

それはあなたが好き、リストビューからアダプタを取得することができますalaways

関連する問題