Непосредственный ответ: нет, это невозможно в Java. Я понимаю это, и это немного странный вопрос, но я уже давно так кодирую, и мне всегда казалось, что это грязный метод, поэтому я хотел бы уточнить, что я делаю , Скажем, например, у меня есть Activity, которая расширяет класс Activity, так что я могу использовать onCreate и т. Д. И т. Д. ... в этом Activity у меня есть SimpleCursorAdapter, который заполняет ListView.
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, потому что я создаю совершенно новый класс с именем CustomCursorAdapter, который расширяет SimpleCursorAdapter, чтобы я мог использовать такие методы, как bindView, newView и т. Д., Чтобы использовать кнопки в моих объектах ListView.
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;
}
Я сократил свой код здесь, чтобы использовать его в качестве примера, поэтому, если я удалю все, что делает этот нерабочий код, я извиняюсь, но нерабочий код не является целью моего вопроса. Мой вопрос заключается в том, является ли это единственным способом переопределения методов, если я не расширю само действие с помощью SimpleCursorAdapter? Это не кажется большой проблемой, но когда у меня есть 10 различных действий, все выполняющие в основном одно и то же, но с разными ListViews и элементами, и мне нужно создать 10 различных CustomCursorAdapter, это кажется грязным и избыточным. Может быть, есть способ создать только 1 другое действие, а затем передать нужные мне предметы? Кажется, что было бы намного чище просто использовать SimpleCursorAdapter вместо того, чтобы создавать собственный и переопределять нужные мне методы прямо в Activity. Если я неправильно назвал этот вопрос, пожалуйста, не стесняйтесь редактировать.