最新在开发过程中遇到一个关于自定义view的问题。遇到传值的问题,代码如下
1、第一步,在自定义view里面写一个接口,接口方法可以随便写
public OperatorP mOperatorP;
public ProcessLayouted(Context context) {
super(context);
}
public interface OperatorP {
public void showUi(ProcessItem item);
}
public void setOperatorP(OperatorP operatorP) {
mOperatorP = operatorP;
}
第二步:调用
public void setAdapter(ProcessAdapter adapter) {
this.adapter = adapter;
for (int i = 0; i < adapter.getCount(); i++) {
// 自定义每一项
final ProcessItem item = adapter.getItem(i);
View view = adapter.getView(i, null, null);
this.setOrientation(HORIZONTAL);
this.addView(view, new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
// 每一项的点击事件
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (item != null) {
//在这里一定要注意转,不然有可能直接报空
mOperatorP = (OperatorP) context;
//调用接口方法传对象
mOperatorP.showUi(item);
}
}
});
}
}
最后在activity中直接实现该接口,然后做处理该传值对象的方法
public class BActivity extends PublicActivity implements OperatorP {
public void showUi(ProcessItem item) {
String str_a = "";
String str_b = "";
if (item != null && TextUtils.isEmpty(tvChangeA.getText())
&& TextUtils.isEmpty(tvChangeB.getText())) {
tvChangeA.setText(item.getText());
tvGXOne.setText(item.getName());
}
}
}
就这么easy,以后想要在自定义或者是adapter中,继承baseAdapter那种,都可以这么写。做相关的UI处理。