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