【问题标题】:how to get object from listview in setOnItemClickListener in android?如何从 android 的 setOnItemClickListener 中的 listview 获取对象?
【发布时间】:2011-10-27 18:20:51
【问题描述】:

我在 arrayadapter 中添加了 arraylist,其中包含对象,每个对象由两个元素/项目组成,我已经成功地为 setListAdapter 设置了该适配器,现在我想在 listview 的 setOnItemClickListener 中获取这些项目。

这是我的代码

   TweetListAdaptor adaptor = new TweetListAdaptor(this,R.layout.list_item, tweets);       
   setListAdapter(adaptor); 
   ListView lv = getListView();
   lv.setTextFilterEnabled(true);
   lv.setOnItemClickListener(new OnItemClickListener() 
   {
   public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
   {
     //here i want to get the items             
   }
 });

【问题讨论】:

    标签: android android-adapterview


    【解决方案1】:
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        int color = parent.getAdapter().getItem(position);
    }
    

    【讨论】:

    • 谢谢。它对我帮助很大。
    • 太好了,这就是答案
    【解决方案2】:
    public void onItemClick(AdapterView<?> parent, View view,int position, long id){
        something = tweets[position];
    }
    

    【讨论】:

    • 显然这是唯一的解决方案
    【解决方案3】:

    你想得到这些物品并用它们做什么?

    例如,您可以像这样发送 Toast 消息。

    public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
        {
            Toast.makeText(getApplicationContext(), tweets[position], Toast.LENGTH_SHORT).show();
    
        }
    

    希望这会有所帮助。

    【讨论】:

      【解决方案4】:

      如果您准备好包含所有数据的列表视图并希望获取仅对象的值,请使用:

      ViewGroup row = (ViewGroup) listprod.getChildAt(0);
      TextView tvTest = (TextView) row.findViewById(R.id.textnomprod);
      

      我的列表视图是“listprod”,我想在 0 位置获取值,其中 textnomprod 是我的对象,我正在保存在我的变量 tvTest

      【讨论】:

        【解决方案5】:
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
                Windows clickedObject = adapter.get(position);
            }
        }
        

        考虑上面的例子,

        • 列表视图中使用的对象名为Windows
        • 在列表视图中点击的项目的对象被命名为clickedObject
        • 使用的数组列表称为适配器

        另外,请确保在您的 ArrayList 前加上 final

        【讨论】:

          【解决方案6】:

          我通过使用为其设置的适配器解决了这个问题。

          TweetListAdaptor adaptor = new TweetListAdaptor(this,R.layout.list_item, tweets);       
          setListAdapter(adaptor); 
          ListView lv = getListView();
          lv.setTextFilterEnabled(true);
          lv.setOnItemClickListener(new OnItemClickListener() 
          {
              public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
             {    
                  //here i want to get the items  
                  adaptor.getItem(position);   // this is your object
              }
          });
          

          请记住,适配器必须初始化并设置为 ListView。

          通过这种方式,你可以访问你想要的对象的属性。

          【讨论】:

            【解决方案7】:

            getListView().getItemAtPosition(position) 将在您的TweetListAdaptor 中返回一个Object

            【讨论】:

              猜你喜欢
              • 2021-11-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-03-30
              • 2016-07-10
              • 1970-01-01
              相关资源
              最近更新 更多