Я помещаю слишком много кода в мой привычный адаптер для просмотра списка?
Я думаю, что у меня слишком много кода в моем CustomAdapter для моего списка. Нормально ли иметь несколько кликов, редактирование базы данных и код всплывающего окна в CustomAdapter?
Я рассмотрел, как переместить код в класс активности, в котором находится просмотр списка, но это либо невозможно, либо очень сложно. У меня нет особого опыта, поэтому трудно следовать некоторым из более технических методов кодирования.
1 ответ
Я изучил, как переместить код в класс активности, в котором находится просмотр списка, но это либо невозможно, либо очень сложно
Единственная причина, по которой это будет сложно, заключается в том, что вы слишком много делаете в адаптере.
Если вы хотите переместить код в действие, то вы можете использовать интерфейсы
Например, с некоторыми данными Item
класс который у тебя в адаптере.
// ... BaseAdapter, ArrayAdapter, RecyclerView.Adapter... Same difference
public class YourAdapter extends BaseAdapter {
public interface OnItemActionListener {
void onItemEdited(Item x);
void onItemAdded(Item x);
void onItemClicked(Item x);
// etc.
}
public OnItemActionListener listener; // should make private with a setter method
...
// somewhere in the adapter
Item x = getItem(position);
if (listener != null) {
listener.onItemClicked(item);
}
...
}
И ваша активность может реализовать этот интерфейс.
public YourActivity extends Activity
implements YourAdapter.OnItemActionListener {
@Override
public void onItemClicked(Item x) {
Log.d("item click", String.valueOf(x));
}
@Override
public void onItemAdded(Item x) {
Log.d("item added", String.valueOf(x));
}
@Override
protected void onCreate(Bundle b){
super.onCreate(b);
setContentView... ;
adapter = new YourAdapter... ;
adapter.listener = this; // Should use a setter method instead
}
}
В соответствии с этим
Нормально ли иметь несколько кликов
Вам нужен только один интерфейс для onClick(View v)
и вы можете проверить v.getId()
против любого R.id
значение, чтобы увидеть, что нажимается.