2011-05-01 175 views
2

所以我很新的android开发,并试图拼凑一些代码位。这是我到目前为止有:“不是抽象的,并且不会覆盖抽象方法。”

package com.teslaprime.prirt; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.AdapterView.OnItemClickListener; 
import java.util.ArrayList; 
import java.util.List; 

public class TaskList extends Activity { 
    List<Task> model = new ArrayList<Task>(); 
    ArrayAdapter<Task> adapter = null; 

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

    Button add = (Button) findViewById(R.id.add); 
    add.setOnClickListener(onAdd); 

    ListView list = (ListView) findViewById(R.id.tasks); 

    adapter = new ArrayAdapter<Task>(this,android.R.layout.simple_list_item_1,model); 
    list.setAdapter(adapter); 
    list.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(View v, int position, long id) { 
     adapter.remove(position); 
     } 
    });} 

    private View.OnClickListener onAdd = new View.OnClickListener() { 
    public void onClick(View v) { 
     Task task = new Task(); 
     EditText name = (EditText) findViewById(R.id.taskEntry); 

     task.name = name.getText().toString(); 

     adapter.add(task); 
    } 
    }; 
} 

,这里是我得到的错误:

compile: 
    [javac] /opt/android-sdk/tools/ant/main_rules.xml:384: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds 
    [javac] Compiling 2 source files to /home/chris-kun/code/priRT/bin/classes 
    [javac] /home/chris-kun/code/priRT/src/com/teslaprime/prirt/TaskList.java:30: <anonymous com.teslaprime.prirt.TaskList$1> is not abstract and does not override abstract method onItemClick(android.widget.AdapterView<?>,android.view.View,int,long) in android.widget.AdapterView.OnItemClickListener 
    [javac]  list.setOnItemClickListener(new OnItemClickListener() { 
    [javac]               ^
    [javac] /home/chris-kun/code/priRT/src/com/teslaprime/prirt/TaskList.java:32: remove(com.teslaprime.prirt.Task) in android.widget.ArrayAdapter<com.teslaprime.prirt.Task> cannot be applied to (int) 
    [javac]   adapter.remove(position); 
    [javac]    ^
    [javac] 2 errors 

BUILD FAILED 
/opt/android-sdk/tools/ant/main_rules.xml:384: Compile failed; see the compiler error output for details. 

Total time: 2 seconds 

什么想法?

+0

请耐心等待编译器告诉你,我想所有的答案都在其中。 :) – 2011-05-01 04:30:09

回答

4

我不是一个Android程序员,但它指的是这一行:

list.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(View v, int position, long id) { 
    adapter.remove(position); 
    } 
});} 

你有景,INT,长的方法签名,并希望

AdapterView<?> parent, View view, int position, long id as the signature 

至于第二个问题,它的意思是

适配器的remove方法要求Task对象不是整数。

1

一个abstract类包含未实现的方法。如果你想扩展它,你必须实现未实现的方法。 Eclipse会告诉你什么时候你不需要做什么,如果你点击红色的“x”,会给你提出解决这些问题的建议。在这种情况下,它将自动包含您尚未实现的这些抽象方法的方法签名。

相关问题