0

私は小さいが非常に非現実的な問題を抱えています:)。CustomArrayAdapter の ArrayAdapter クラスを拡張していますが、このクラスで新しいアクティビティも開始したいと考えています。問題は、延長したかったのですが、受け入れられませんでした。Googleはまた、Androidでは不可能であり、アプリケーションを拡張する必要があると述べています. 唯一のことは、どのようにメソッドを呼び出すのですか? Object.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 を持つ次のアクティビティでデータベース情報を取得することはできません。これは、多くのアイテム (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 からアクティビティを開始しないでください。いつ開始しますか? 使用している 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 に答える