1
這裏是我的layuout main.xml;android的listview監聽器不工作?
<?xml version="1.0" encoding="utf-8"?>
<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:id="@+id/android:list" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_weight="1" android:visibility="visible" android:clickable="true"/>
</LinearLayout>
這是擴展ListActivity的MainActivity;
public class MainActivity extends ListActivity {
private final List<SpinnerEntry> spinnerContent = new LinkedList<SpinnerEntry>();
private ListView contactListView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
contactListView=getListView();
queryAllRawContacts();
registerForContextMenu(getListView());
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Intent i = new Intent(this, ContactDetailsActivity.class);
i.putExtra("hello", id);
// Activity returns an result if called with startActivityForResult
startActivity(i);
}
private void queryAllRawContacts() {
final String[] projection = new String[] {
RawContacts.CONTACT_ID, // the contact id column
RawContacts.DELETED // column if this contact is deleted
};
final Cursor rawContacts = managedQuery(
RawContacts.CONTENT_URI, // the uri for raw contact provider
projection,
null, // selection = null, retrieve all entries
null, // not required because selection does not contain parameters
null); // do not order
final int contactIdColumnIndex = rawContacts.getColumnIndex(RawContacts.CONTACT_ID);
final int deletedColumnIndex = rawContacts.getColumnIndex(RawContacts.DELETED);
spinnerContent.clear();
if(rawContacts.moveToFirst()) { // move the cursor to the first entry
while(!rawContacts.isAfterLast()) { // still a valid entry left?
final int contactId = rawContacts.getInt(contactIdColumnIndex);
final boolean deleted = (rawContacts.getInt(deletedColumnIndex) == 1);
if(!deleted) {
spinnerContent.add(queryDetailsForContactSpinnerEntry(contactId));
}
rawContacts.moveToNext(); // move to the next entry
}
}
rawContacts.close();
final ContactsSpinnerAdapater adapter = new ContactsSpinnerAdapater(spinnerContent, this);
contactListView.setAdapter(adapter);
}
這裏是我的customadapter類,名爲ContactsSpinnerAdapater;
public class ContactsSpinnerAdapater extends BaseAdapter implements
SpinnerAdapter{
private final List<SpinnerEntry> content;
private final Activity activity;
public ContactsSpinnerAdapater(List<SpinnerEntry> content,
Activity activity) {
super();
this.content = content;
this.activity = activity;
}
public int getCount() {
return content.size();
}
public SpinnerEntry getItem(int position) {
return content.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView,
ViewGroup parent) {
final LayoutInflater inflater = activity.getLayoutInflater(); // default layout inflater
final View spinnerEntry = inflater.inflate(
R.layout.row, null); // initialize the layout from xml
final TextView contactName = (TextView) spinnerEntry
.findViewById(R.id.cName);
final ImageView contactImage = (ImageView) spinnerEntry
.findViewById(R.id.userIcon);
final SpinnerEntry currentEntry = content.get(position);
contactName.setText(currentEntry.getContactName());
contactImage.setImageBitmap(currentEntry.getContactPhoto());
spinnerEntry.setOnClickListener(new OnClickListener(){
public void onClick(View arg0) {
// TODO Auto-generated method stub
}});
return spinnerEntry;
}
}
問題是,無論我嘗試過點擊任何列表項時無法啓動ContacDetailsActivity intent。基本上,聽者一些如何不被激活。那麼你可以看看代碼並告訴我我錯過了什麼嗎?
感謝您的回答。事情是這個適配器類是一個不同的類。所以如果我像上面那樣將意圖放在課堂上,那麼這裏沒有任何意義,而且id是從哪裏來的?或者我應該做的是,我將把customadapter作爲活動類中的內部類繼承並嘗試它?你會建議什麼? – akd
Ooops。你是對的。這是一個複製粘貼錯誤。我修改了我的答案以解決您的問題。 –
輝煌:)歡呼隊友我欣賞這一點。只有一件事是缺少的是,當開始活動時,它應該被稱爲activity.startActivity(i);否則它不能找到方法:)感謝很多。林不知道,如果我可以問它在這裏,它現在的作品,但是當我點擊任何項目它不改變項目的顏色,使它像它被點擊?我應該在xml中明確地編程它? – akd