我有一个小但非常不实际的问题:)。我正在为CustomArrayAdapter扩展ArrayAdapter类,但我现在也想在这个类中启动一个新的Activity。问题是,我想扩展它,但它不接受它。谷歌还表示,它在Android中是不可能的,我必须扩展我的应用程序。唯一的问题是,我如何调用该方法呢? Object.startActivity ??
谢谢!
答案 0 :(得分: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.
}
}
希望这会有所帮助..
答案 1 :(得分: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);
}
};
答案 2 :(得分: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))。
你们认为这是最好的解决方案吗?对不起,很难解释:)