2012-09-23 109 views
0

我有一個小但非常不切實際的問題:)。我擴展了我的CustomArrayAdapter的ArrayAdapter類,但我現在也想在這個類中啓動一個新的Activity。事情是,我想擴展它,但它不接受它。谷歌還表示,這是不可能在Android中,我必須擴展我的應用程序。只有一件事,那我該怎麼稱呼這個方法呢? Object.startActivity?在一個類中擴展ArrayAdapter和Activity?

謝謝!

+0

如果您在您的活動中定義CustomArrayAdapterinside,您可以調用ClassnameOfActivity.this.startActivity(); – sroes

+1

@Jack如果您需要在屬於特定級別的下一個活動中顯示項目,則可以在數據庫中再添加一個名爲'item_level'的列,它將標識每個項目(行)所屬的級別。 您可以將級別編號傳遞給下一個活動,然後顯示傳入級別的項目。 您可以使用'setTag()'方法爲每個ListView項設置級別編號,並使用'View'類的'getTag()'方法檢索單擊項的級別編號。 –

回答

3

我認爲你想要實現的是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. 
    } 
} 

希望這有助於..

+0

@ mrres1擴展ListActivity並不是強制性的,事實上這是用戶的選擇。我可以在我的'your_activity_layout.xml'中有一個ListView,我可以使用'findViewById'方法引用它。 –

+1

正如我前面所說的,爲了使用ListView而不是強制擴展ListActivity。這取決於用戶/開發人員如何管理'ListView'及其適配器。我們需要在相應的佈局xml文件中調用(android:id)'ListView'作爲'@android:id/list'。ListActivity提供了一些快捷方式,比如'onListItemClick()','setListAdapter()'。如果萬一我需要在使用不同適配器的活動中顯示兩個ListView,該怎麼辦?那麼我將如何使用'ListActivity'來管理這個案例呢? –

+0

@ mrres1請參閱http://developer.android.com/reference/android/app/ListActivity.html爲什麼Android會創建ListActivity。 –

0

你不應該從一個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); 

} 
}; 
0

我知道,我想這要做到這一點是這樣的:

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))。

你們認爲這是最好的解決方案嗎?對不起,對於相當困難的解釋:)

相關問題