2017-09-27 15 views
0

私は、テキスト入力、追加ボタン、およびダイナミックリストからなるエクササイズアンドロイドアプリを作成しました。ユーザーは、テキスト入力に文字列を入力し、追加ボタンをクリックしてリストに追加することができます。ただし、エミュレータでこのスクリプトを実行すると、追加ボタンをクリックすると何も起こりません。ボタンをクリックしてもログが表示されないので、logcatを確認することは役に立ちません。私もブレークポイントを追加しようとしましたが、やり直すときに何も起こりません。誰かが私を助けてくれますか?私は大いに感謝しています。ありがとう。ダイナミックリストアプリ追加ボタンが動作しない

package p.listviewexerice2; 

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.Toast; 

import java.util.ArrayList; 

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 

    Button bt; 
    EditText et; 
    ListView lv; 
    ArrayAdapter<String> adapter; 
    ArrayList<String> list; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     bt = (Button) findViewById(R.id.button); 
     et = (EditText) findViewById(R.id.editText); 
     lv = (ListView) findViewById(R.id.listView); 
     list = new ArrayList<>(); 
     list.add("x"); 
     adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list); 
     lv.setAdapter(adapter); 
     lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { 
       Toast.makeText(getBaseContext(),list.get(position),Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    } 

    @Override 
    public void onClick(View v){ 
     if(v==bt){ 
      String name = et.getText().toString(); 
      if(name.isEmpty()){ 
       Toast.makeText(getBaseContext(),"Empty entry",Toast.LENGTH_SHORT).show(); 
      } 
      else{ 
       list.add(name); 
       adapter.notifyDataSetChanged(); 
      } 
     } 
    } 
} 

答えて

0

lv.setOnItem..コードブロックを削除してもう一度お試しいただけますか? あなたのボタンの代わりに、この方法にonClick()

+0

Onlickとsetonitemclicklistenerは実際に異なっています。前者は、エントリに文字列があるかどうかをチェックし、存在する場合は、それをリストに追加します。後者は、アイテムをクリックするとそのアイテムのコンテンツを繰り返します。 – pxc3110

0

を呼び出すので、あなたはすでに、onClickListenerから実装しているので:

adapter.add(name); 

説明:あなたはパラメータリストでアダプタを作成

list.add(name); 

は、これを行います、 大丈夫。しかしそれ以来、アダプターはそれ自身の内部リストを管理しています。アダプタには、その内部リストを管理するための組み込みメソッド "add()"と "remove()"もあります。

+0

は動作しません:( – pxc3110

0

コードはほとんど問題なく、ただ1つ欠けています。ボタンbtのクリックイベントを登録していません。クリックイベントを登録しないと、システムはonClick(View v)のコードを実行できなくなります。 がそうちょうどあなたのonCreateに以下のコードを追加します()

bt.setOnClickListener(this); 
関連する問題