2012-09-23 45 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))。

你们认为这是最好的解决方案吗?对不起,对于相当困难的解释:)

相关问题