0

我有一个小但非常不切实际的问题:)。我正在为我的 CustomArrayAdapter 扩展 ArrayAdapter 类,但我现在还想在这个类中启动一个新的 Activity。问题是,我想扩展它,但它不接受它。谷歌还表示这在 android 中是不可能的,我必须扩展我的应用程序。唯一的问题是,我该如何调用该方法呢?对象.startActivity ??

谢谢!

4

3 回答 3

3

我认为您要实现的是多重继承,而 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.
    }
}

希望这可以帮助..

于 2012-09-23T19:29:31.163 回答
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)) 。

你们认为这是最好的解决方案吗?很抱歉解释得很困难:)

于 2012-09-23T20:16:11.960 回答
0

您不应该从 ArrayAdapter 启动 Activity。你想什么时候开始?您可以通过在您正在使用的 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);

}
};
于 2012-09-23T19:56:54.863 回答