基本上,我有這樣的結構:變更活動的EditText上從適配器中 - > CustomView
活動 - > RecyclerView適配器 - >自定義視圖
下面是我的代碼(我已經離開有些部分是爲了使它更清晰)。
這裏是我的活動,MainActivity.java:
public class MainActivity extends AppCompatActivity {
private final String TAG = "MainActivity";
private EditText textField;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
setSupportActionBar(toolbar);
}
textField = (EditText) findViewById(R.id.textField);
// Adapter code
}
}
這裏是我的適配器,MyAdapter.java:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private static final String TAG = "MyAdapter";
private Context context;
public MyAdapter(Context context) {
this.context = context;
}
public class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(View v) {
super(v);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(context);
CustomView customView = new CustomView(context);
ViewHolder viewHolder = new ViewHolder(customView);
return viewHolder;
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
//
}
}
這裏是我的自定義視圖,CustomView.java:
public class CustomView extends RelativeLayout {
private final String TAG = "CustomView";
private RelativeLayout mLayout;
private ImageView mPicture;
public CustomView(Context context) {
super(context);
init();
}
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
inflate(getContext(), R.layout.item_layout, this);
this.mLayout = (RelativeLayout) findViewById(R.id.layout);
this.mPicture = (ImageView) findViewById(R.id.picture);
mPicture.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// change text of EditText in Activity here
}
});
}
}
我希望能夠做的是,如果用戶在自定義視圖點擊mPicture
什麼,應該CH將我的活動中的EditText的文本改爲「Hello,world!」。
我該怎麼做?
你試過'的EditText EDITTEXT =(EditText上)context.findViewById(R.id.textField);」 ?在CustomView中,保存對創建新CustomView時要求的上下文的引用。 –
後來,我想讓它,以便它在不同的上下文/活動不同的東西。因此,在一個活動,我可能要改變一個EditText的文本,而在另一個活動,我可能要更改按鈕的顏色在屏幕上點擊'mPicture'時。 – user7632571
如何將'adapter'改爲'abstract class',並在adapter中創建一個新的'abstract method',當'mPicture'被點擊時調用'abstract method',然後在activity中創建你自己的實現。請檢查我的答案。 – jemsnaban