我认为我的CustomAdapter中有太多代码用于我的listview。在CustomAdapter中有多个onclicks,db编辑和弹出窗口代码是否正常?
我已经研究过如何将代码移动到包含listview的活动类中,但它要么不可能,要么非常复杂。我没有太多的经验,因此很难遵循一些更技术性的编码方法。
答案 0 :(得分:0)
我已经研究了如何将代码移动到包含listview的活动类中,但它不可能或非常复杂
复杂的唯一原因是你在适配器中做得太多了。
如果您确实想将代码移动到活动中,那么使用接口
的方式例如,在适配器中有一些给定的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);
}
...
}
您的Activity可以实现该接口。
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
}
}
关于这个
拥有多个onclicks是正常的
onClick(View v)
只需要一个界面,您可以针对任何v.getId()
值检查R.id
,以查看点击的内容。