2

对于我的博士工作,我使用的是 C++ CGAL 库提供的 dD Geometry Kernel。

  • 我的基本目标:我想通过顺序添加一个新点来构建一系列维度增长的超球体,直到达到任意维度 d。第一个超球面是一维的,最后一个超球面是 d 维的。添加的每个新点都会导致维度的实际增加(无共面性)。

  • 我的问题:使用 CGAL::Sphere_d 类,我不知道如何在 d 维环境空间(即 d 维点)中构造(dk)维超球面(k < d)。事实上,要构建一个 d'-sphere,需要提供 d'+1 个 d'-points(这是正常的)。例如,我想用 3 个3维点构建一个圆盘(2 球体)。因此,直接使用这个 CGAL 类意味着我提供二维点,这是不可能的(到目前为止)。

  • 我的问题:作为 CGAL 库的最新用户,我不知道这个类是否可能是我必须使用的类,或者我是否有必要找到另一个类?如果没有必要,如何绕过我的问题?

提前致谢,

奥克塔维奥


使用android中的按钮删除listview项目

所以我添加了按钮,但是位置变量出现错误。我做对了吗?

    public View getView(int position, View convertView, ViewGroup parent) {
    TaskListItem tli;
    if(null == convertView){
        tli =(TaskListItem)View.inflate(context, R.layout.task_list_items, null);
        tli.setBinButton((ImageButton) tli.findViewById(R.id.bin));
        tli.getBinButton().setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                tasks.remove(position);
                notifyDataSetChanged();
            }
        });
    }
    else{
        tli = (TaskListItem)convertView;
    }
    tli.setTask(tasks.get(position));
    return tli;
    }

我正在编写一个任务管理器程序,并且遇到了 listView 的问题。我已经创建了列表,现在我想在单击项目上的按钮时删除列表上的项目。我不确定应该在哪里创建按钮并添加侦听器。有人可以帮助我吗谢谢。

public class ViewTasksActivity extends ListActivity {

private Button addButton;
private TaskManagerApplication app;
private TaskListAdapter adapter;

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

    app = (TaskManagerApplication)getApplication();
    adapter = new TaskListAdapter(app.getCurrentTask(), this);
    setListAdapter(adapter);
}

protected void onResume(){
    super.onResume();
    adapter.forceReload();
}


@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    adapter.toggleTaskCompleteAtPosition(position);
}

protected void removeCompletedTasks() {
    adapter.removeCompletedTasks();

}

private void setUpViews() {
    addButton = (Button)findViewById(R.id.add_button);      
    addButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            Intent intent = new Intent(ViewTasksActivity.this, AddTaskActivity.class);
            startActivity(intent);              
        }
    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}}


public class TaskListAdapter extends BaseAdapter {

private ArrayList<Task> tasks;
private Context context;

public TaskListAdapter(ArrayList<Task> tasks, Context context) {
    super();
    this.tasks = tasks;
    this.context = context;
}

public int getCount() {
    return tasks.size();
}

public Object getItem(int position) {
    return (null == tasks) ? null: tasks.get(position);
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    TaskListItem tli;
    if(null == convertView){
        tli =(TaskListItem)View.inflate(context, R.layout.task_list_items, null);
    }
    else{
        tli = (TaskListItem)convertView;
    }
    tli.setTask(tasks.get(position));
    return tli;
}

public void forceReload() {
    notifyDataSetChanged();
}

public void toggleTaskCompleteAtPosition(int position) {
    Task t = tasks.get(position);
    t.toggleComplete();
    notifyDataSetChanged();
}

public void removeCompletedTasks() {
    ArrayList<Task> completedTasks = new ArrayList<Task>();
    for(Task task : tasks){
        if(task.isComplete()){
            completedTasks.add(task);
        }
    }
    tasks.removeAll(completedTasks);
    notifyDataSetChanged();
}

public void removeTask(int position){
    tasks.remove(position);
}}

public class TaskListItem extends LinearLayout {

private Task task;
private TextView taskName;
private TextView resp;
private TextView prio;
private Button binButton;

public TaskListItem(Context context, AttributeSet attrs) {
    super(context, attrs);
}

protected void onFinishInflate(){
    super.onFinishInflate();
    taskName = (TextView) findViewById(R.id.the_task);
    resp = (TextView) findViewById(R.id.resp);
    prio = (TextView) findViewById(R.id.prio);
}

public Button getBin(){
    return binButton;
}

public Task getTask() {
    return task;
}

public void setTask(Task task) {
    this.task = task;
    taskName.setText(task.getName());
    resp.setText("Resp: " + task.getResponsible());
    prio.setText("Prio: " + task.getPriority());
}}
4

0 回答 0