我有一個小但非常不切實際的問題:)。我擴展了我的CustomArrayAdapter的ArrayAdapter類,但我現在也想在這個類中啓動一個新的Activity。事情是,我想擴展它,但它不接受它。谷歌還表示,這是不可能在Android中,我必須擴展我的應用程序。只有一件事,那我該怎麼稱呼這個方法呢? Object.startActivity?在一個類中擴展ArrayAdapter和Activity?
謝謝!
我有一個小但非常不切實際的問題:)。我擴展了我的CustomArrayAdapter的ArrayAdapter類,但我現在也想在這個類中啓動一個新的Activity。事情是,我想擴展它,但它不接受它。谷歌還表示,這是不可能在Android中,我必須擴展我的應用程序。只有一件事,那我該怎麼稱呼這個方法呢? Object.startActivity?在一個類中擴展ArrayAdapter和Activity?
謝謝!
我認爲你想要實現的是Multiple Inheritance而Java語言不支持這個。
你可以嘗試一些這樣的事情。
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_activity_layout);
.....
MyCustomAdapter adapter = new MyCustomAdapter();
.....
}
class MyCustomAdapter extends ArrayAdapter {
// your adapter implementation.
}
}
希望這有助於..
@ mrres1擴展ListActivity並不是強制性的,事實上這是用戶的選擇。我可以在我的'your_activity_layout.xml'中有一個ListView,我可以使用'findViewById'方法引用它。 –
正如我前面所說的,爲了使用ListView而不是強制擴展ListActivity。這取決於用戶/開發人員如何管理'ListView'及其適配器。我們需要在相應的佈局xml文件中調用(android:id)'ListView'作爲'@android:id/list'。ListActivity提供了一些快捷方式,比如'onListItemClick()','setListAdapter()'。如果萬一我需要在使用不同適配器的活動中顯示兩個ListView,該怎麼辦?那麼我將如何使用'ListActivity'來管理這個案例呢? –
@ mrres1請參閱http://developer.android.com/reference/android/app/ListActivity.html爲什麼Android會創建ListActivity。 –
你不應該從一個ArrayAdapter開始活動。 你想什麼時候開始? 您可以通過在您正在使用的GroupView上設置ItemClickListener來處理列表項目的點擊操作。
ListView view = (ListView)findViewById(R.id.listview);
view.setAdapter(new CustomArrayAdapter(getApplicationContext(), array));
view.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
startActivity(intent);
}
};
我知道,我想這要做到這一點是這樣的:
CustomArrayAdapter myAdapter= new CustomArrayAdapter(this, questions);
gv.setAdapter(myAdapter);
gv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
myDbHelper.close();
Intent i = new Intent("com.bgdroid.quizapp.ANSWER");
startActivityForResult(i,0);
// TODO Auto-generated method stub
}
});
這裏的問題:在視圖上的信息來自於一個數據庫條目。我無法調用v.getId()並獲取具有此ID的下一個Activity中的數據庫信息,因爲有很多項目(60,因此ID爲1到60),但是在每個級別顯示。 (ID 1-20爲1級,ID 20-40爲2級,...)
通過輸入這個,我現在意識到,我可以得到的ID,將其傳遞到下一個活動並執行這樣的: v.getItem()+(itemsPerLevel *(currentLevel - 1))。
你們認爲這是最好的解決方案嗎?對不起,對於相當困難的解釋:)
如果您在您的活動中定義CustomArrayAdapterinside,您可以調用ClassnameOfActivity.this.startActivity(); – sroes
@Jack如果您需要在屬於特定級別的下一個活動中顯示項目,則可以在數據庫中再添加一個名爲'item_level'的列,它將標識每個項目(行)所屬的級別。 您可以將級別編號傳遞給下一個活動,然後顯示傳入級別的項目。 您可以使用'setTag()'方法爲每個ListView項設置級別編號,並使用'View'類的'getTag()'方法檢索單擊項的級別編號。 –