【问题标题】:how to pass values from list view to an detalis Activity如何将值从列表视图传递到 detalis Activity
【发布时间】:2018-09-08 02:11:22
【问题描述】:

我创建了一个简单的listView,它从服务器获取数据,一切正常,但现在我想将listView(Item) 的值传递给另一个Activity

 public void onViewBind(View view, Cursor cursor, ODataRow row) {
    _list = new ArrayList<>();

     OControls.setText(view, R.id.person_name, row.getString("name"));


    // Retrive Code  dept*/
      Dep dept = new Dept(context, null);
        ODataRow rows_c = dept.select(
                new String[]{"code"}
        ).get(row.getInt("dept_id")-1);
        _list.add(rows_c.getString("code"));

        OControls.setText(view, R.id.dept_person,  rows_c.getString("code"));


    // Retrive name person*/

    ResPartner partner = new ResPartner(context, null);
    ODataRow rows = partner.select(
            new String[]{"name"}
    ).get(row.getInt("person_id")-1);

    OControls.setText(view, R.id.Type_sanction, rows.getString("name"));




}

我正在使用数组列表将值从第一种方法传递给第二个方法,但是当我单击时我想在列表视图中传递一个对象对应的行

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long 
     id) {
        final Intent intent;
        intent =  new Intent(view.getContext(), Detailsdept.class);
        Bundle extras = new Bundle();
        extras.putSerializable("ARRAYLIST",(Serializable)_list);

        for(int i=0; i<_list.size(); i++) {
             String x = _list.get(i);



            extras.putString("code", x);

            intent.putExtras(extras);

        }



        view.getContext().startActivity(intent);

        Toast.makeText(view.getContext(), "id"+position, Toast.LENGTH_SHORT).show();

    }
}

【问题讨论】:

  • 我需要传递对象而不是删除

标签: java android listview android-intent bundle


【解决方案1】:

在您的适配器中创建接口

public interface OnItemClickListener {
  void onItemClicked(int position, Object object);
}

在您的适配器调用中

Adapter adapter = new Adapter(list, new Adapter.OnItemClickListener() {
            @Override
            public void onItemClicked(int position, Object object) {
                  // Handle Object of list item here
            }
        });

在您的适配器上

private OnItemClickListener onItemClickListener; // Global scope 

在构造函数调用中:

this.onItemClickListener = onItemClickListener;

关于您的项目点击事件:

itemView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
      onItemClickListener.onItemClicked(position, _list.get(position));
    }
});

【讨论】:

  • 我正在使用这个适配器我可以把这段代码放在这个类适配器github.com/Odoo-mobile/crm/blob/…
  • 是的,为什么不呢。否则你可以修改现有的接口“IOnItemClickListener”,它有 public void onItemClick(View view, int position); --- 需要修改为 public void onItemClick(View view, int position, Object obj);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-14
  • 2016-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-15
相关资源
最近更新 更多