を変更しない:背景色は、(DialogFragmentのインタフェースを経由して)私が達成しようとしている何
ユーザーが持つDialogFragmentてMainActivityに位置してリストビューに彼の項目の背景色を変更することができます色の4つのオプション。私はこれを達成するためにインターフェイスを使用しています。インターフェイスはDialogFragmentで作成され、ListView自体のアダプタクラスにあるViewHolderに実装されます。
私は何を扱っています:
私はDialogFragmentから色を選択すると、それはがないために、私はリストで作成するすべての新規項目の指定された背景色を設定が、ん既に存在するもの、または(換言すると)新しい色を選択する前に作成されたものです。
コード: DialogFragment:
// Interfaces...
public interface SetBlueColorListener {
void setBlueColorListener(View v);
}
public interface SetRedColorListener {
void setRedColorListener(View v);
}
public interface SetGreenColorListener {
void setGreenColorListener(View v);
}
public interface SetOrangeColorListener {
void setOrangeColorListener(View v);
}
// Setting interfaces...
public void setBlueColorListener(SetBlueColorListener setBlueColorListener) {
mSetBlueColorListener = setBlueColorListener;
}
public void setRedColorListener(SetRedColorListener setRedColorListener) {
mSetRedColorListener = setRedColorListener;
}
public void setGreenColorListener(SetGreenColorListener setGreenColorListener) {
mSetGreenColorListener = setGreenColorListener;
}
public void setOrangeColorListener(SetOrangeColorListener setOrangeColorListener) {
mSetOrangeColorListener = setOrangeColorListener;
}
public ColorDialogFragment() {}
private ImageView mBlueImageView;
private ImageView mRedImageView;
private ImageView mGreenImageView;
private ImageView mOrangeImageView;
private TextView mAcceptColorTextView;
private SetBlueColorListener mSetBlueColorListener;
private SetRedColorListener mSetRedColorListener;
private SetGreenColorListener mSetGreenColorListener;
private SetOrangeColorListener mSetOrangeColorListener;
private LinearLayout mLinearLayout;
ApplicationSettings mApplicationSettings;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Context context = getActivity();
// Creating the builder...
AlertDialog.Builder builder = new AlertDialog.Builder(context);
View dialogView = getActivity().getLayoutInflater().inflate(R.layout.color_dialog, null);
builder.setView(dialogView);
// Initialize variables...
mBlueImageView = (ImageView) dialogView.findViewById(R.id.blueImageView);
mRedImageView = (ImageView) dialogView.findViewById(R.id.redImageView);
mGreenImageView = (ImageView) dialogView.findViewById(R.id.greenImageView);
mOrangeImageView = (ImageView) dialogView.findViewById(R.id.orangeImageView);
mAcceptColorTextView = (TextView) dialogView.findViewById(R.id.acceptColorTextView);
mLinearLayout = (LinearLayout) dialogView.findViewById(R.id.color_dialog);
// Creating the dialog...
final AlertDialog dialog = builder.create();
// SharedPreferences (defined in ApplicationSettings)
mApplicationSettings = new ApplicationSettings(context);
String color = mApplicationSettings.getColorPreference();
if (color.equals(ColorSettings.BLUE)) {
mLinearLayout.setBackgroundResource(R.color.defaultBlue);
mAcceptColorTextView.setBackgroundResource(R.drawable.blue_lists_selector_rectangle);
}
if (color.equals(ColorSettings.RED)) {
mLinearLayout.setBackgroundResource(R.color.defaultRed);
mAcceptColorTextView.setBackgroundResource(R.drawable.red_lists_selector_rectangle);
}
if (color.equals(ColorSettings.GREEN)) {
mLinearLayout.setBackgroundResource(R.color.defaultGreen);
mAcceptColorTextView.setBackgroundResource(R.drawable.green_lists_selector_rectangle);
}
if (color.equals(ColorSettings.ORANGE)) {
mLinearLayout.setBackgroundResource(R.color.defaultOrange);
mAcceptColorTextView.setBackgroundResource(R.drawable.orange_lists_selector_rectangle);
}
// OnClickListeners...
mBlueImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mSetBlueColorListener.setBlueColorListener(view);
mLinearLayout.setBackgroundResource(R.color.defaultBlue);
mApplicationSettings.setColorPreference(ColorSettings.BLUE);
mAcceptColorTextView.setBackgroundResource(R.drawable.blue_lists_selector_rectangle);
}
});
mRedImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mSetRedColorListener.setRedColorListener(view);
mLinearLayout.setBackgroundResource(R.color.defaultRed);
mApplicationSettings.setColorPreference(ColorSettings.RED);
mAcceptColorTextView.setBackgroundResource(R.drawable.red_lists_selector_rectangle);
}
});
mGreenImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mSetGreenColorListener.setGreenColorListener(view);
mLinearLayout.setBackgroundResource(R.color.defaultGreen);
mApplicationSettings.setColorPreference(ColorSettings.GREEN);
mAcceptColorTextView.setBackgroundResource(R.drawable.green_lists_selector_rectangle);
}
});
mOrangeImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mSetOrangeColorListener.setOrangeColorListener(view);
mLinearLayout.setBackgroundResource(R.color.defaultOrange);
mApplicationSettings.setColorPreference(ColorSettings.ORANGE);
mAcceptColorTextView.setBackgroundResource(R.drawable.orange_lists_selector_rectangle);
}
});
mAcceptColorTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
return dialog;
}
アダプタ:
private ArrayList<ListItem> mListsList;
private OpenDeleteDialogListClickListener mOpenDeleteDialogListClickListener;
public ListsAdapter(OpenDeleteDialogListClickListener deleteListClickListener, ArrayList<ListItem> list) {
mOpenDeleteDialogListClickListener = deleteListClickListener;
mListsList = list;
}
@Override
public ListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.list_list_item, parent, false);
ListViewHolder viewHolder = new ListViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(ListViewHolder holder, int position) {
holder.bindList(mListsList.get(position));
}
@Override
public int getItemCount() {
return mListsList.size();
}
public class ListViewHolder extends RecyclerView.ViewHolder implements ColorDialogFragment.SetBlueColorListener,
ColorDialogFragment.SetGreenColorListener, ColorDialogFragment.SetRedColorListener,
ColorDialogFragment.SetOrangeColorListener {
public TextView mListNameTextView;
public ImageView mDeleteListImageView;
ApplicationSettings mApplicationSettings;
public ListViewHolder(View itemView) {
super(itemView);
mListNameTextView = (TextView) itemView.findViewById(R.id.listNameTextView);
mDeleteListImageView = (ImageView) itemView.findViewById(R.id.deleteListImageView);
// SharedPreferences (defined in ApplicationSettings)
mApplicationSettings = new ApplicationSettings(itemView.getContext());
String color = mApplicationSettings.getColorPreference();
if (color.equals(ColorSettings.BLUE)) {
mListNameTextView.setBackgroundResource(R.drawable.blue_lists_selector_rectangle);
mDeleteListImageView.setBackgroundResource(R.drawable.blue_lists_selector);
}
if (color.equals(ColorSettings.RED)) {
mListNameTextView.setBackgroundResource(R.drawable.red_lists_selector_rectangle);
mDeleteListImageView.setBackgroundResource(R.drawable.red_lists_selector);
}
if (color.equals(ColorSettings.GREEN)) {
mListNameTextView.setBackgroundResource(R.drawable.green_lists_selector_rectangle);
mDeleteListImageView.setBackgroundResource(R.drawable.green_lists_selector);
}
if (color.equals(ColorSettings.ORANGE)) {
mListNameTextView.setBackgroundResource(R.drawable.orange_lists_selector_rectangle);
mDeleteListImageView.setBackgroundResource(R.drawable.orange_lists_selector);
}
mDeleteListImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mOpenDeleteDialogListClickListener.openDeleteDialogListClickListener(view, getAdapterPosition());
}
});
}
public void bindList(ListItem item) {
mListNameTextView.setText(item.getListName());
}
@Override
public void setBlueColorListener(View v) {
mListNameTextView.setBackgroundResource(R.drawable.blue_lists_selector_rectangle);
mDeleteListImageView.setBackgroundResource(R.drawable.blue_lists_selector);
notifyDataSetChanged();
}
@Override
public void setRedColorListener(View v) {
mListNameTextView.setBackgroundResource(R.drawable.red_lists_selector_rectangle);
mDeleteListImageView.setBackgroundResource(R.drawable.red_lists_selector);
notifyDataSetChanged();
}
@Override
public void setGreenColorListener(View v) {
mListNameTextView.setBackgroundResource(R.drawable.green_lists_selector_rectangle);
mDeleteListImageView.setBackgroundResource(R.drawable.green_lists_selector);
notifyDataSetChanged();
}
@Override
public void setOrangeColorListener(View v) {
mListNameTextView.setBackgroundResource(R.drawable.orange_lists_selector_rectangle);
mDeleteListImageView.setBackgroundResource(R.drawable.orange_lists_selector);
notifyDataSetChanged();
}
}
なぜ各色のインターフェイスが必要ですか? –
フルコードを貼り付けてください –
あなたの質問は不明です。 DialogFragmentにはListViewがありますか?あれは正しいですか??そして、あなたはlistViewアイテムで色を設定したいですか? –