私は小さいが非常に非現実的な問題を抱えています:)。CustomArrayAdapter の ArrayAdapter クラスを拡張していますが、このクラスで新しいアクティビティも開始したいと考えています。問題は、延長したかったのですが、受け入れられませんでした。Googleはまた、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.
}
}
お役に立てれば..
私は知っています、私はこれを次のようにしようとしました:
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)) のように実行できることがわかりました。
これが最善の解決策だと思いますか?かなり難しい説明で申し訳ありません:)
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);
}
};