ListActivity и кнопка: миссия невыполнима? - PullRequest
1 голос
/ 21 марта 2011

У меня есть ListActivity, чтобы заполнить содержимое ListView массивом класса I.

Нет проблем с этим, но у меня есть кнопка, расположенная под ListView следующим образом: Добавление кнопки под списком на Android

И проблема в следующем: как установить onClickListener для этой кнопки?

Я пробовал это:

public class showTasks extends ListActivity implements OnClickListener{

Button addTaskButton;
Task[] tasks = {...};

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.show_tasks);
    setListAdapter(new TaskAdapter());

    addTaskButton=(Button)findViewById(R.id.addTaskButton);
}

public void onListItemClick(ListView parent, View v, int position, long id){

    Intent i=new Intent(this,showTask.class);
    Bundle b = new Bundle();
    b.putSerializable("task", tasks[position]);
    i.putExtras(b);
    startActivity(i);
}



//adapting a task to be viewable as a list of instances of the layout Task
class TaskAdapter extends ArrayAdapter<Task>{
    TaskAdapter(){
        super(showTasks.this, R.layout.task, tasks);
    }

    public View getView(int position, View convertView, ViewGroup parent){
        View task=convertView;

        if(task==null){
            LayoutInflater inflater = getLayoutInflater();

            task=inflater.inflate(R.layout.task, parent, false);
        }


        //now, let's define the Task variables and data
        TextView taskName=(TextView)task.findViewById(R.id.taskName);
        taskName.setText(tasks[position].name);

        TextView deadline=(TextView)task.findViewById(R.id.deadline);
        deadline.setText(tasks[position].deadline);

        TextView importance=(TextView)task.findViewById(R.id.importance);
        importance.setText(tasks[position].importance);

        TextView urgency=(TextView)task.findViewById(R.id.urgency);
        urgency.setText(tasks[position].urgency);

        return(task);
    }
}

public void onClick(View view) {
    if(view==addTaskButton){
        Intent i=new Intent(this,addTask.class);
        startActivity(i);
    }
}

public void onClick(DialogInterface dialog, int which) {
    // TODO Auto-generated method stub

}
}

Достаточно взглянуть на последнюю часть: для начала, это не дает мне пустоту onClick (представление View), это должно быть onClick (диалог DialogInterface, int which).

Но это даже не доходит, потому что, как только я доберусь до addTaskButton.setOnClickListener ((android.view.View.OnClickListener) this); оно умирает!

Итак, как я могу иметь ListView и кнопку в одном ListActivity?

1 Ответ

1 голос
/ 21 марта 2011

Вы используете неправильный диалог ... убедитесь, что ваш оператор импорта говорит:

import android.view.OnClickListener;

вместо

import android.content.DialogInterface.OnClickListener;
...