Android 为什么我的ListView onListItemClick不能将ListView作为文本值返回?

Android 为什么我的ListView onListItemClick不能将ListView作为文本值返回?,android,Android,我很抱歉,如果这是完全新手代表我。我是android编程的新手,我非常沮丧!我在这方面看了很多例子,试了很多次,但它们似乎都产生了相同的结果 底线是。。。我有联系人姓名的列表视图。当我点击一个名字时,我希望祝酒词重复他们的名字。但是,我没有为他们的名字干杯,而是不断得到“android.content.ContentResolver”这样的值$CursorWrapperInner@40571e90“我希望在哪里看到“约翰·史密斯” 以下是我的2个xml布局: 联系人名单(一): 试试这个- @

我很抱歉,如果这是完全新手代表我。我是android编程的新手,我非常沮丧!我在这方面看了很多例子,试了很多次,但它们似乎都产生了相同的结果

底线是。。。我有联系人姓名的列表视图。当我点击一个名字时,我希望祝酒词重复他们的名字。但是,我没有为他们的名字干杯,而是不断得到“android.content.ContentResolver”这样的值$CursorWrapperInner@40571e90“我希望在哪里看到“约翰·史密斯”

以下是我的2个xml布局:

联系人名单(一):

试试这个-

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
String selection = l.getItemAtPosition(position).toString();
Toast.makeText(this, selection, Toast.LENGTH_LONG).show();
}
试试这个:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
     // TODO Auto-generated method stub
     super.onListItemClick(l, v, position, id);
     String keyword =  ((TextView)v.findViewById(R.id.contactname)).getText();
     Toast.makeText(this, "You selected: " + keyword,Toast.LENGTH_LONG).show();       } 

android display是正确的,实际上您正在打印一整行光标,而不仅仅是您感兴趣的列。而且,与java中的大多数对象一样,默认情况下,该对象的字符串表示形式(即toString返回的内容)是对象在JVM中的内存地址

尝试使用带有参数1或2的游标的方法
public void setStringConversionColumn(int-stringConversionColumn)
(我永远不记得列是否与jdbc一样基于0)。然后,要获取该值的字符串,可以使用

CharSequence selection = convertToString(cursor);
--更新

问候,,
Stéphane

如果我的答案不起作用,请显示
R.layout.联系\u list\u one\u rows
第二个xml布局的目的是什么???不幸的是,这不起作用。我收到了同样的短信。android.content.ContentResolver$CursorWrapperInner@40571e90Unfortunately这不起作用。它实际上需要我这样做:String关键字=(String)((TextView)getListAdapter().getItem(position)).getText();Toast.makeText(您选择的“+”关键字,Toast.LENGTH_LONG.show();我必须导入TextView,然后当我运行它时,我收到一条强制退出消息?对不起,我对Java和android编程都是新手。我不确定我是否完全按照你的建议去做。你能模拟一下你将如何编写代码吗?这行吗?打印出像选择这样的东西,看看会发生什么。对不起,我一定是太厚了。。。但是当我不遵循上面的代码时。我的光标位于私有空间populateContactListOne()中。因此,我尝试将cursor.setSTringConversion(0)放在那里,它将代码更改为:((SimpleCursorAdapter)cursor.setStringConversionColumn(0);但是当我尝试应用CharSequence selection=convertToString(游标)时;Toast.makeText(这个,选择,Toast.LENGTH_LONG).show();我无法再引用光标,因为它不是可用于整个活动的变量。我做错了什么?请将游标声明为数据成员。仍然在popute中初始化它,但将它声明为一个字段。我是否按照您在更新代码中要求的做了?因为它正在工作:)
import android.app.ListActivity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;




public class ContactListOne extends ListActivity {

    private static final int NEW_RULE_CONTACT=1;

    private SimpleCursorAdapter adapter;

    private RulesDbAdapter mDbHelper;
    private ListView wtf;




    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.contact_list_one);
        mDbHelper = new RulesDbAdapter(this);



        mDbHelper.open();

        // Obtain handles to UI objects



      Cursor cursor = getContacts();
        //Build adapter with contact info



        String[] fields = new String[] {

                ContactsContract.Contacts.DISPLAY_NAME
        };
        int[] to = new int[]{

                R.id.contactname
        };

        adapter = new SimpleCursorAdapter(this, R.layout.contact_list_one_rows, cursor, fields, to);

        setListAdapter(adapter);

        mDbHelper.close();
    }


    private Cursor getContacts()
    {
        // Run query
        Uri uri = ContactsContract.Contacts.CONTENT_URI;
        String[] projection = new String[] {
                ContactsContract.Contacts._ID,
                ContactsContract.Contacts.DISPLAY_NAME
        };
        String notInList = mDbHelper.createContactNotInList();



        String selection =  ContactsContract.Contacts.DISPLAY_NAME + " != '' AND " + ContactsContract.Contacts.LOOKUP_KEY + notInList ;


        String[] selectionArgs = null;
        String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";


        return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
    }



    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        // TODO Auto-generated method stub
        super.onListItemClick(l, v, position, id);


        Cursor cursor = (Cursor) adapter.getItem(position);
        String selection = cursor.getString(1);
        Toast.makeText(this, selection,Toast.LENGTH_LONG).show();   



    }



}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
String selection = l.getItemAtPosition(position).toString();
Toast.makeText(this, selection, Toast.LENGTH_LONG).show();
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
     // TODO Auto-generated method stub
     super.onListItemClick(l, v, position, id);
     String keyword =  ((TextView)v.findViewById(R.id.contactname)).getText();
     Toast.makeText(this, "You selected: " + keyword,Toast.LENGTH_LONG).show();       } 
CharSequence selection = convertToString(cursor);
//somewhere in onCreate
cursor.setStringConversionColumn ( 0 or 1 );

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
  super.onListItemClick(l, v, position, id);
  //for that you will need to define cursor as a data member
  CharSequence selection = convertToString(cursor);
  Toast.makeText(this, selection, Toast.LENGTH_LONG).show();
}