如何将值从列表视图传递到 detalis Activity

Posted

技术标签:

【中文标题】如何将值从列表视图传递到 detalis Activity【英文标题】:how to pass values from list view to an 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();

    

【问题讨论】:

我需要传递对象而不是删除 【参考方案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);

以上是关于如何将值从列表视图传递到 detalis Activity的主要内容,如果未能解决你的问题,请参考以下文章

如何将值从基本适配器传递到 Android 中的 Activity

使用 location.href 将值从视图传递到控制器为 null

如何将值从 javascript 函数传递到 django 视图

如何将值从 tableview 传递到 collectionview

如何将值从 def 传递到视图 openerp

如何将值从一个片段的回收器视图项传递到另一个片段