2013-09-24 36 views
0
public class MyActivity extends Activity { 
    Context context; 
    List<String> tasks; 
    ArrayAdapter<String> adapter; 

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

     context = this; 
     tasks = new ArrayList<String>(); 

     Button add = (Button) findViewById(R.id.button); 
     add.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       EditText editText = (EditText) findViewById(R.id.editText); 
       editText.setVisibility(1); 

       InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.showSoftInput(editText, 0); 

       String value = editText.getText().toString(); 
       tasks.add(value); 

       adapter = new ArrayAdapter<String>(context,R.id.listView,tasks); 
       ListView listView = (ListView) findViewById(R.id.listView); 
       listView.setAdapter(adapter); 
      } 
     }); 
    } 
} 

在这里,我从用户那里获得价值。我试图将它添加到列表视图动态。但是,它显示了一个名为“Unfortunatly app is closed”的错误。它向任务变量添加字符串值失败。任务是一个字符串列表。如何在android中动态添加字符串到ListView?

tasks.add(value); 

如果我尝试添加别的东西也是失败的。像,

tasks.add("something"); 

我不知道是什么问题。但我相信它在这条线上是失败的,因为如果我删除这一行,我的应用程序工作正常。如果有人知道它为什么失败,请让我知道。提前致谢。

+0

你能发布错误吗?我猜这是在任务列表中的NPE,也许是在轮换之后?其运行时错误为 – Eluvatar

+0

。我如何发布? –

+0

你的logcat说什么? – Raghunandan

回答

5

源代码错误太多。试试下面的代码,并明白你在写什么,而不是盲目地复制粘贴。

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    context = this; 
    tasks = new ArrayList<String>(); 

    // instances all your variables on initial only 
    Button add = (Button) findViewById(R.id.button); 
    final EditText editText = (EditText) findViewById(R.id.editText); 

    // second parameter is row layout, 
    adapter = new ArrayAdapter<String>(context,android.R.layout.simple_list_item1,tasks); 
    ListView listView = (ListView) findViewById(R.id.listView); 
    listView.setAdapter(adapter); 



    add.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      editText.setVisibility(1); 

      InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.showSoftInput(editText, 0); 

      String value = editText.getText().toString(); 
      tasks.add(value); 

      // this method will refresh your listview manually 
      adapter.notifyDataSetChanged(); 
     } 
    }); 
} 
+1

资源有一个小错误:-) android.R.layout.simple_list_item_1 –

相关问题