【问题标题】:how to get the index and textview of the selected item in listview?如何获取列表视图中所选项目的索引和文本视图?
【发布时间】:2010-12-30 05:56:08
【问题描述】:

我有一个来自 web 服务的列表视图,我想获取所选项目的索引和文本视图。我的列表视图是

         company                  symbol

         android                   an
         iphone                    ip
         blackderry                bb
            .                       .
            .                       .
            .                       .

那么告诉我如何从 webservice 获取列表视图中符号的索引和文本视图。我使用了两种方法

第一种方法:

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

        ID = id;

    int selectedPosition = l.getSelectedItemPosition();
        index=String.valueOf(selectedPosition);
         Log.e("index value","index"+index);

   TextView txt=(TextView)findViewById(R.id.symboltext);
        TextView temp=(TextView)v;
        txt.setText(temp.getText());
        Log.e("text",txt.toString());

}

在上面的代码中,logcat 显示索引为 -1,无法显示 txt。

第二种方法:

    listview.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
   {
    public void onItemSelected(AdapterView parentView, View childView, int position, long id) 
    {
      String text = ((TextView)childView.getText()).toString();
      //The above text variable has the text value of selected item
      // position will reflect the index of selected item
    }
   public void onNothingSelected(AdapterView parentView) 
   {
   }
});

在上述方法中,listview 没有获得 onclick 动作。所以请告诉我如何获取列表视图中所选项目的索引和文本视图。

最好的问候

提前致谢

【问题讨论】:

  • 感谢您的回复。我搜索了很多论坛,但我没有找到答案。所以请告诉我那个论坛的网址。

标签: android web-services listview


【解决方案1】:

试试这个代码。并检查您的 logcat。它应该会给你想要的结果。

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

        ID = id;

       Log.e("index value","index"+position);
       TextView txt = (TextView) v.findViewById(R.id.symboltext);
       Log.e("text",txt.toString());

}

【讨论】:

    【解决方案2】:

    您可以使用 hashmap 将您的字符串放入列表视图

    this link 将帮助您了解 hashmap 的工作原理以及如何保存和从中检索字符串

    【讨论】:

      【解决方案3】:

      我在Custom ListView 上尝试过这样的事情:

      我的情况是:

      从服务器获取三个对象,JSONArrayRequest 命名为:

      ID (tvLvDocID)
      Title (tvLvDocTitle)
      Sub Title (tvLvDocSub Title)
      

      ID实际上是MySQL数据库中item列的ID

      我所做的是:

      listViewDoc.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                                      @Override
                                      public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
      
                                          int myPosition = position;
      
                                          String id_doc_from_lv = listViewDoc.getItemAtPosition(myPosition).toString();
                                          Toast.makeText(getApplicationContext(), "ID is : " + id_doc_from_lv, Toast.LENGTH_LONG).show();
      
                                      }
                                  });
                              } catch (Exception e) {
                                  e.printStackTrace();
                              }
      

      但是我的问题是它返回了Custom ListView 中的Title。 我只想要ID,我也在标题上方的ListView 中显示。 (这是另一个故事,我稍后会将INVISIBLE 属性应用于该ID

      我只想要ID。所以我确实得到了this answer的帮助:

      当我在我的代码中添加这些行时:

      String tv_ID_Str= ((TextView)view.findViewById(R.id.tvLvDocID)).getText().toString();
      

      并将此tv_ID_Str 称为:

      Toast.makeText(getApplicationContext(), "ID is : " + tv_ID_Str, Toast.LENGTH_LONG).show();
      

      啊哈!现在我可以成功显示tvLvDocID 并且可以从数据库中检索到ID 上的所有信息。

      最终代码如下所示:

      listViewDoc.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                                      @Override
                                      public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
      
                                          int myPosition = position;
      
                                          String id_doc_from_lv = listViewDoc.getItemAtPosition(myPosition).toString();
                                          // selected item
                                          String tv_ID_Str = ((TextView)view.findViewById(R.id.tvLvDocID)).getText().toString();
      
                                          Toast.makeText(getApplicationContext(), "ID is : " + tv_ID_Str, Toast.LENGTH_LONG).show();
      
                                  }
                              });
                          } catch (Exception e) {
                              e.printStackTrace();
                          }
      

      我回答的目的是像我这样花费大量时间来做这件事的人。我希望这会对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 2011-06-18
        • 2014-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多