我有一个小但非常不切实际的问题:)。我正在为我的 CustomArrayAdapter 扩展 ArrayAdapter 类,但我现在还想在这个类中启动一个新的 Activity。问题是,我想扩展它,但它不接受它。谷歌还表示这在 android 中是不可能的,我必须扩展我的应用程序。唯一的问题是,我该如何调用该方法呢?对象.startActivity ??
谢谢!
我认为您要实现的是多重继承,而 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.
}
}
希望这可以帮助..
我知道,我试过这样做:
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)) 。
你们认为这是最好的解决方案吗?很抱歉解释得很困难:)
您不应该从 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);
}
};