私に代わってこれが完全なnewbである場合はお詫び申し上げます。私はアンドロイドプログラミングの新しいブランドですし、地獄のように不満です!私は見て、これで多くの例を試しましたが、すべて同じ結果を生み出しているようです。なぜ私のListView onListItemClickは、テキスト値としてListViewを返しますか?
最終行は...私は連絡先の名前のリストビューを持っています。名前をクリックすると、トーストで名前を繰り返すことができます。しかし、代わりに自分の名前を焼くの私はここで私は、「ジョン・スミス」を参照してくださいことを期待する「[email protected]」のような値
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.Toast;
public class ContactListOne extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contact_list_one);
populateContactListOne();
}
private Cursor getContacts()
{
// Run query
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME
};
return managedQuery(uri, projection, null, null, null);
}
private void populateContactListOne() {
Cursor cursor = getContacts();
//Build adapter with contact info
String[] fields = new String[] {
ContactsContract.Contacts.DISPLAY_NAME
};
int[] to = new int[]{
R.id.contactname
};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.contact_list_one_rows, cursor, fields, to);
setListAdapter(adapter);
}
@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 = getListAdapter().getItem(position).toString();
Toast.makeText(this, "You selected: " + keyword,Toast.LENGTH_LONG).show();
}
}
を得続ける私の2のxmlレイアウトです:
contact_list_one:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ListView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@android:id/list"
/>
</LinearLayout>
contact_list_one_rows:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/contactname"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="7dip"
>
</TextView>
----------------------------------更新------------- -----------------------------
これはどのようにクリーンであるか、まったく異なる理由がわかりません。しかし、私はそれが古いバージョンのアンドロイドを使って時代遅れだったウェブ上のどこかの例を見つけました...しかし、それはうまくいくようです。ここでは、これは違った、私は説明が大好きだ作品なぜ誰かが私に説明できる場合、私はすべての手段によって、自分のコードを変更する方法です:)
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();
}
}
私の答えのdidntの仕事は 'R.layout.contact_list_one_rows'私を見る場合 –
2番目のxmlレイアウトの目的は何ですか? – LUKER