【问题标题】:Trying to get String from ListView试图从 ListView 获取字符串
【发布时间】:2013-04-14 06:17:16
【问题描述】:

我目前的问题是我有一个 ListView 我用来显示我的联系人现在我想设置 onItemClick 来获取联系人的姓名并将其设置为一个名为 p2 的 TextView 我目前拥有的代码是:

protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.setp2);

        cursor = managedQuery(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);

        String[] from = new String[]{ContactsContract.Contacts._ID,ContactsContract.Contacts.DISPLAY_NAME};
        int[] to = new int[]{R.id.id_text,R.id.name_text};

        final SimpleCursorAdapter adapter = new SimpleCursorAdapter(setp2.this,R.layout.setp2_layout,cursor,from,to);

        ListView list = (ListView)findViewById(R.id.contact_list);
        list.setAdapter(adapter);

        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {              
            }
        });


}

所以基本上我不确定我需要在 onItemClick 中做什么,感谢任何帮助!

【问题讨论】:

    标签: android listview onitemclick


    【解决方案1】:

    在您的 onItemClick 中,您将获得与该列表项关联的视图实例。从该视图中,您可以获得与其关联的文本并将其设置为 p2 TextView。如果我对您的要求的理解是正确的,代码将是这样的:

     list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) { 
                   CharSequence name = ((TextView)view.findViewById(R.id.name_text)).getText();
                   //Set this to your textview in P2
                   tvP2.setText(name);
    
            }
        });
    

    【讨论】:

    • 无论我点击哪个,当我尝试它时,它都会在 ListView 中一直给我名字
    【解决方案2】:

    设置SimpleCursorAdapter.CursorToStringConverter 并将其设置在适配器上,然后使用convertToString(Cursor cursor) 在项目单击时获取文本:

    (Cursor) simple.getItem(position)
    

    【讨论】:

      【解决方案3】:
      @Override
              public void onItemClick(AdapterView<?> parent, View view, int position,
                      long id) { 
                  cursor.moveToPosition(position);
                  String name = cursor.getString(cursor.getColumnIndex(
                                  ContactsContract.Contacts.DISPLAY_NAME));
                   p2.setText(name);
              }
          });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多