即時答案是否,這在Java中是不可能的。我明白,這是一個noob問題,但我一直在編寫這種方式一段時間,我總是覺得這是一個骯髒的方法,所以我想澄清我在做什麼。說例如我有一個Activity擴展了Activity類,以便我可以使用onCreate等等......在該Activity中,我有一個SimpleCursorAdapter來填充ListView。Android在活動中覆蓋多個類
String sql = "SELECT * FROM myTable";
Cursor data = database.rawQuery(sql, null);
String fields[] = {"field1", "field2", "field3"};
adapter = new CustomCursorAdapter(this, R.layout.custom_row, data, fields, new int[] { R.id.Field1, R.id.Field2, R.id.Field2 });
list.setAdapter(adapter);
,因爲我創建一個名爲CustomCursorAdapter全新的類,它擴展SimpleCursorAdapter這樣我就可以使用諸如bindView,NewView的等上使用我的ListView控件對象按鈕我命名這個CustomCursorAdapter。
public class CustomCursorAdapter extends SimpleCursorAdapter {
private Context myContext;
private myActivity parentActivity;
private Button delButton;
public CustomCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
super(context, layout, c, from, to);
myContext = context;
parentActivity = (myActivity) myContext;
@Override
public void bindView(View view, Context context, Cursor cursor) {
int idColumn = cursor.getColumnIndex("_id");
final int getId = cursor.getInt(idColumn);
final double increment = 0.25;
UnitsConversions convert = new UnitsConversions();
int nameColumn = cursor.getColumnIndex("name");
String getName = cursor.getString(nameColumn);
TextView name = (TextView)view.findViewById(R.id.GrainName);
name.setText(getName);
delButton = (Button)view.findViewById(R.id.DeleteButton);
delButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0) {
parentActivity.deleteItem(getId);
}
});
@Override
public View newView(Context context, Cursor cursor, final ViewGroup parent) {
View view = View.inflate(context, R.layout.list_item, null);
return view;
}
我攀登我的代碼了很多在這裏,所以如果我刪除任何讓這種非工作的代碼我appologize只是作爲一個例子使用,但非工作代碼是不是我的問題的目的。我的問題是,除非使用SimpleCursorAdapter擴展活動本身,否則這是覆蓋方法的唯一方法嗎?它看起來不是什麼大問題,但是當我有10個不同的活動時,所有的基本上都做同樣的事情,但有不同的ListView和項目,我必須創建10個不同的CustomCursorAdapter,看起來很髒和多餘。也許有一種方法只創建1個其他活動,然後傳遞我需要的項目?看起來只要使用SimpleCursorAdapter而不是創建一個自定義的並且覆蓋Activity中我需要的方法就會更清晰。如果我沒有正確地提出這個問題,請隨時編輯。
好吧,你要說創建一個名爲SubActivity(或其他)的新類並擴展Activity,然後在同一個SubActivity中聲明另一個類並擴展SimpleCursorAdapter以及其他任何我可能需要的東西。然後擴展該SubActivity,我將從多個類中提供所有我的方法,我可以根據自己的判斷來覆蓋它們?我可以舉個例子嗎? – ryandlf
是的。對於一個非常簡單的例子,設想SubActivity聲明一個公共實例變量TextView,稱爲tv,並寫入onCreate方法來在該TextView上調用setContentView。然後在每個真正的Activity中,在onCreate中,你只需調用super.onCreate()然後說tv.setText(「Some String」);您不必在每個子類中聲明TextView並重復setContentView行,只需要更改Activity特定文本的行。 – Jems
有道理,但是沒有辦法基本調用該子類中的多個類,然後在實際活動中擴展子類,以便我可以覆蓋所有在子類中聲明的類?對於每個不同的活動,我都有不同的變量,所以對我來說嘗試重用這部分代碼沒有多大意義。我寧願只能重寫我的活動中的方法,這樣我就可以保留所有需要和整齊的東西,而不必擁有Activity1,CustomAdapter1,Activity2,CustomAdapter2等。 – ryandlf