【问题标题】:ListActivity: Buttons not firing off on onListItemClickListActivity:按钮未在 onListItemClick 上触发
【发布时间】:2015-02-13 04:56:41
【问题描述】:

有没有办法让按钮与 onListItemClick 一起工作?我的编辑/删除按钮在实际的列表项中。

截至目前,我无法单击列表项或列表项中的任何按钮。我将 xml 文件中按钮的焦点设置为 false,但这不起作用。

感谢任何帮助。

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

  //button listeners
  edit.setOnClickListener(new View.OnClickListener() {
    @Override
    //On click function
    public void onClick(View view) {
      //Create the intent to start another activity
      Intent i = new Intent(view.getContext(), JournalEntry.class);
      startActivity(i);
      i.putExtra(JournalDB.KEY_ROWID, id);
      startActivityForResult(i, ACTIVITY_EDIT);
    }
  });

  delete.setOnClickListener(new View.OnClickListener() {
    @Override
    //On click function
    public void onClick(View view) {
      journalDatabaseHelper.deleteEntry(id);
      Toast.makeText(JournalList.this, "Entry is being deleted...", Toast.LENGTH_SHORT).show();
      fillData();
    }
  });
}

【问题讨论】:

  • 请阅读Adapters的工作原理。
  • 会的。感谢您的建议

标签: android listview button


【解决方案1】:

在 Adapter 的 GetView() 方法上编写您的 OnClick 方法。

【讨论】:

  • 我有一个 cursorAdapter..它类似于 Adapter 吗?你有这个代码的例子吗?
【解决方案2】:

公共类 MainActivity 扩展 Activity 实现 View.OnClickListener {

Button b;

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

    b = (Button) findViewById(R.id.button1);
    b.setOnClickListener(this);

}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.button1:
        Toast.makeText(MainActivity.this, "Entry is being deleted...",
                Toast.LENGTH_SHORT).show();
        break;

    default:
        break;
    }
}

}

【讨论】:

  • 这是什么?这个“答案”给 OP 和 SO 带来了什么价值?在 SO 中不鼓励仅使用代码回答。
【解决方案3】:

尝试在 onListItemClick 函数中使用下面粘贴的代码..

                    if (position== 1) {

                            Intent intent1 = new Intent(
                                    getApplicationContext(),
                                    youractivity.class);

                            startActivity(intent1);

                        } else if (position== 2) {

                            Intent intent1 = new Intent(
                                    getApplicationContext(),
                                    youractivity2.class);

                            startActivity(intent1);

                        }

【讨论】:

  • 在 SO 中不鼓励仅代码答案。
猜你喜欢
  • 1970-01-01
  • 2010-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多