Я создал специальный диалоговый интерфейс (определенный в отдельный фрагмент), который вызывается из фрагмента, если это необходимо. Этот диалоговый интерфейс раздувает listView, поэтому я назвал адаптер пользовательского списка (расширенный базовый адаптер). Теперь я хочу ссылаться на глобальную переменную, определенную в фрагменте диалога из адаптера пользовательского списка. Как мне это сделать?Как ссылаться на глобальную переменную в фрагменте из класса ANDROID
EDIT
Я хочу добиться диалогового фрагмента с помощью этого пользовательского макета:
****DIALOG TITLE****
ListView where each row have this layout:
ICON - SOME TEXT - SwitchWidget
У меня есть этот фрагмент:
public class FilterDialogFragment extends DialogFragment {
//Checked is a class that store some info
public ArrayList<Checked> mSelectedItem; <--- variable i want to modify
public static FilterDialogFragment newInstance(ArrayList<Checked> checked) {
FilterDialogFragment fragment = new FilterDialogFragment();
Bundle args = new Bundle();
args.putParcelableArrayList("ARRAYLIST_STRING", checked);
fragment.setArguments(args);
return fragment;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
mSelectedItem = getArguments().getParcelableArrayList("ARRAYLIST_STRING");
String[] checkItem = new String[mSelectedItem.size()];
boolean[] isChecked = new boolean[mSelectedItem.size()];
for(int i=0; i<mSelectedItem.size(); i++) {
checkItem[i]=""+mSelectedItem.get(i).getWhatChecked();
if(mSelectedItem.get(i).getShow()==1) {
//show
isChecked[i]=true;
} else {
isChecked[i]=false;
}
}
final Dialog dialog = new Dialog(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.dialog_layout, null);
ListView lv = (ListView) view.findViewById(R.id.custom_list);
Button ok_button = (Button) view.findViewById(R.id.ok_button);
ok_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, getActivity().getIntent());
dialog.dismiss();
}
});
CustomListAdapterDialog mAdapter = new CustomListAdapterDialog(getActivity());
mAdapter.addItem(new DialogModel(R.color.green, checkItem[i], isChecked[i]));
lv.setAdapter(mAdapter);
dialog.setContentView(view);
return dialog;
}
И это мой CustomAdapter:
public class CustomListAdapterDialog extends BaseAdapter {
[....]
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
int type = getItemViewType(position);
//System.out.println("getView " + position + " " + convertView + " type = " + type);
if(convertView == null) {
//initialize the view Holder
viewHolder = new ViewHolder();
switch (type) {
case TYPE_ITEM:
convertView = inflater.inflate(R.layout.dialog_row_layout, null);
viewHolder.ivIcon = (ImageView) convertView.findViewById(R.id.marker);
viewHolder.tvNomeChecked = (TextView) convertView.findViewById(R.id.nome_marker);
viewHolder.swCheck = (Switch) convertView.findViewById(R.id.checked_item);
break;
case TYPE_SEPARATOR:
convertView = inflater.inflate(R.layout.dialog_section_layout, null);
viewHolder.tvSeparator = (TextView) convertView.findViewById(R.id.section_alert_dialog);
break;
}
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
final DialogModel model;
switch (type) {
case TYPE_ITEM:
model =(DialogModel) mData.get(position);
//viewHolder.ivIcon.setImageDrawable(model.getMarkerIcon());
viewHolder.ivIcon.setBackgroundResource(model.getMarkerColor());
viewHolder.tvNomeChecked.setText(model.getNomePercorso());
if(model.isCkeck()) {
viewHolder.swCheck.setChecked(true);
} else {
viewHolder.swCheck.setChecked(false);
}
viewHolder.swCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//HERE I WANT TO CALL THE mSelectedItem OF MY FilterDialogFragment
}
});
break;
case TYPE_SEPARATOR:
model =(DialogModel) mData.get(position);
viewHolder.tvSeparator.setText(model.getNomeSection() );
break;
}
return convertView;
}
private static class ViewHolder {
ImageView ivIcon;
TextView tvNomeChecked;
TextView tvSeparator;
Switch swCheck;
}
создать экземпляр диалогового фрагмента, затем вы можете получить доступ к его общедоступной переменной с помощью своего экземпляра в любом месте приложения – Android
Я уже создаю экземпляр фрагмента диалога. Мне нужно ссылаться на этот экземпляр, а не на новый, потому что некоторые операции над глобальной переменной –