Android 在一个类中扩展ArrayAdapter和Activity?

Android 在一个类中扩展ArrayAdapter和Activity?,android,class,Android,Class,我有一个很小但很不实际的问题:)。我正在为我的CustomArrayAdapter扩展ArrayAdapter类,但我现在还想在此类中启动一个新活动。问题是,我想扩展它,但它不接受。谷歌还表示,这在android系统中是不可能的,我必须扩展我的应用程序。唯一的问题是,我该如何调用该方法呢?Object.startActivity 谢谢 我认为您试图实现的是,Java语言不支持这一点 你可以试试这样的东西 public class MyActivity extends Activity {

我有一个很小但很不实际的问题:)。我正在为我的CustomArrayAdapter扩展ArrayAdapter类,但我现在还想在此类中启动一个新活动。问题是,我想扩展它,但它不接受。谷歌还表示,这在android系统中是不可能的,我必须扩展我的应用程序。唯一的问题是,我该如何调用该方法呢?Object.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.
    }
}

希望这有帮助。

我认为您试图实现的是,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.
    }
}

希望这有帮助。

您不应该从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);

}
};
ListView视图=(ListView)findViewById(R.id.ListView);
setAdapter(新的CustomArrayAdapter(getApplicationContext(),数组));
view.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共视图单击(AdapterView arg0、视图arg1、整型arg2、长型arg3){
星触觉(意向);
}
};

您不应该从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);

}
};
ListView视图=(ListView)findViewById(R.id.ListView);
setAdapter(新的CustomArrayAdapter(getApplicationContext(),数组));
view.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共视图单击(AdapterView arg0、视图arg1、整型arg2、长型arg3){
星触觉(意向);
}
};

我知道,我试过这样做:

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

            }
});
CustomArrayAdapter myAdapter=新的CustomArrayAdapter(此,问题);
gv.设置适配器(myAdapter);
gv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
myDbHelper.close();
意向i=新意向(“com.bgdroid.quizapp.ANSWER”);
startActivityForResult(i,0);
//TODO自动生成的方法存根
}
});
这里的问题是:视图上的信息来自一个数据库条目。我无法调用v.getId()并在下一个活动中使用此id获取数据库信息,因为有许多项(60,所以id 1到60)但按级别显示。(id 1-20为级别1,id 20-40为级别2,…)

通过输入这个,我现在意识到我可以获取id,将它传递给下一个活动,并执行如下操作:v.getItem()+(itemsPerLevel*(currentLevel-1))


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

我知道,我试过这样做:

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

            }
});
CustomArrayAdapter myAdapter=新的CustomArrayAdapter(此,问题);
gv.设置适配器(myAdapter);
gv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
myDbHelper.close();
意向i=新意向(“com.bgdroid.quizapp.ANSWER”);
startActivityForResult(i,0);
//TODO自动生成的方法存根
}
});
这里的问题是:视图上的信息来自一个数据库条目。我无法调用v.getId()并在下一个活动中使用此id获取数据库信息,因为有许多项(60,所以id 1到60)但按级别显示。(id 1-20为级别1,id 20-40为级别2,…)

通过输入这个,我现在意识到我可以获取id,将它传递给下一个活动,并执行如下操作:v.getItem()+(itemsPerLevel*(currentLevel-1))


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

如果在活动中定义CustomArrayAdapterinside,可以调用ClassnameOfActivity.this.startActivity()@Jack如果需要在下一个活动中显示属于特定级别的项目,可以在数据库中添加一个名为
item\u level
的列,该列将标识每个项目(行)所属的级别。您可以将级别编号传递给下一个活动,然后显示传递级别的项目。您可以使用
setTag()
方法为ListView的每个项目设置级别号,并使用
View
类的
getTag()
方法检索单击项目的级别号。如果您在活动中定义CustomArrayAdapterinside,则可以调用ClassnameOfActivity。this.startActivity()@Jack如果需要在下一个活动中显示属于特定级别的项目,可以在数据库中添加一个名为
item\u level
的列,该列将标识每个项目(行)所属的级别。您可以将级别编号传递给下一个活动,然后显示传递级别的项目。您可以使用
setTag()
方法为ListView的每个项目设置级别号,并使用
View
类的
getTag()
方法检索单击项目的级别号。@mrres1扩展ListActivity不是强制性的,实际上这是用户的选择。我可以在我的
your\u activity\u layout.xml中有一个列表视图,我可以使用
findViewById
方法来引用它。正如我前面所说,使用
ListView
不必扩展
ListActivity
。这取决于用户/开发人员希望如何管理
ListView
及其适配器
ListActivity
提供了一些快捷方式方法,如
onListItemClick()
setListAdapter()
,我们需要在相应的布局xml文件中调用(android:id)
ListView
作为
@android:id/list
。如果我需要在活动中使用不同的适配器显示两个ListView,该怎么办?所以呢