FragmentDialog обмен с Activity ArrayList, Динамические view
Добавлено: 09 апр 2015, 21:13
1) Возникли сложности при обмене между Activity и DialogFragment.
Мне нужно добавлять данные в ArrayList, и потом в Активити хочу из него построить список, с этим вроде проблем нет. Завожу переменные и в Activity и в диалоге, передаю из Диалога в активити через интерфейс, но вот как обратно получить именно ArrayList я не смог разобраться. Ещё мне не нравится момент, что ArrayList сохраняется в Диалоге даже по выходу из него, почему так происходит я вроде понял, жизнь самого диалога соответствует жизни Активити, но у меня получается так что Активити, может жить долго а диалоги каждый раз будут разные. Поэтому мне кажется что можно либо, оставить ArrayList только в самом активити, и обращаться к нему из Диалога, но как это сделать я не смог найти, или оставить в самом Диалоге, но этот вариант мне не очень подходит. Вопрос в том, какой вариант лучше, и как реализовать обмен ArrayList между Активити, и Диалогом.
П.С. Мне нужно чтобы была возможность редактировать данные в диалоге, после добавления.
-Интерфейс на получение данных из диалога в Активити:
[syntax=java5]
@Override
public void onFinishEditGroupNameDialog(String inputText, ArrayList<String> perf_list) {
mTextGroupName.setText(inputText);
performers_list = perf_list;
}
[/syntax]
Основной код диалога... Да я понимаю что это жесть, но я только учусь, вычитал какие то методы пробую использовать)
[syntax=java5]
case "AddGroupNameDialog":
count_performers = 0;
v = inflater.inflate(R.layout.add_group_dialog, container);
mEditGroupName = (EditText)v.findViewById(R.id.txt_group_name);
Button mButtonAddPerformer = (Button)v.findViewById(R.id.btn_add_performer);
mButtonAddPerformer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count_performers++;
TableRow tbR = new TableRow(getDialog().getContext());
final EditText etNew = new EditText(getDialog().getContext());
Button btnNew = new Button(getDialog().getContext());
TableRow.LayoutParams lp = new TableRow.LayoutParams(MATCH_PARENT, WRAP_CONTENT, 1.0f);
etNew.setLayoutParams(lp);
etNew.setSingleLine();
btnNew.setText("Edit");
tbLayout.addView(tbR);
tbR.addView(btnNew);
tbR.addView(etNew);
btnNew.setId(count_performers);
etNew.setId(count_performers);
btnNew.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
performers_list.add(etNew.getText().toString());
Toast.makeText(getDialog().getContext(), "test " + view.getId() + " " + performers_list.size(), Toast.LENGTH_SHORT).show();
}
});
}
});
tbLayout = (TableLayout)v.findViewById(R.id.table_performer_list);
getDialog().setTitle("Group Editor");
mEditGroupName.requestFocus();
getDialog().getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
mEditGroupName.setOnEditorActionListener(this);
mEditGroupName.setText(((TextView) getActivity().findViewById(R.id.tv_group)).getText());
break;
[/syntax]
Из кода диалога вытекает второй вопрос.
2) Я динамически добавляю View - Button и EditText в таблицу.
Потом создаю обработчик кнопки, вроде бы я разобрался, как для каждой кнопки сделать свой обработчик, они даже работают. Но я не совсем понял каким образом к каждой кнопки, привязан нужный EditText, я пробовал получать Id которые задавал вручную, но что то не получалось в итоге сделав так:
[syntax=java5]
btnNew.setId(count_performers);
etNew.setId(count_performers);
btnNew.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
performers_list.add(etNew.getText().toString());
Toast.makeText(getDialog().getContext(), "test " + view.getId() + " " + performers_list.size(), Toast.LENGTH_SHORT).show();
}
});
[/syntax]
Всё заработало, но для меня это выглядит как магия...
Если нужно будет, но там всё очень плохо...
Сама Activity
[syntax=java5]
package com.softfireway.windowchange;
import android.app.DialogFragment;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Александр on 16.03.2015.
*/
public class AddSongActivity extends FragmentActivity implements AddSongDialog.EditSongDetailsDialogListener {
private LyricsDataBaseHelper mDatabaseHelper;
private SQLiteDatabase mDatabase;
private DialogFragment mAddSongDialog;
private TextView mTextSongName;
private TextView mTextSongLyrics;
private TextView mTextGroupName;
private List<String> performers_list = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_song_activity);
mDatabaseHelper = new LyricsDataBaseHelper(this);
mDatabase = mDatabaseHelper.getWritableDatabase();
mTextSongName = (TextView)findViewById(R.id.tv_song_name);
mTextSongLyrics = (TextView)findViewById(R.id.tv_song_lyrics);
mTextGroupName = (TextView)findViewById(R.id.tv_group);
mAddSongDialog = new AddSongDialog();
}
public void onClickDB(View view) {
switch (view.getId()) {
case R.id.btnAdd:
ContentValues cv = new ContentValues();
cv.put(mDatabaseHelper.SONGNAME, mTextSongName.getText().toString());
cv.put(mDatabaseHelper.LYRICS, mTextSongLyrics.getText().toString());
mDatabase.insert(mDatabaseHelper.TABLE_NAME_SONGS, null, cv);
mTextSongName.setText("");
mTextSongLyrics.setText("");
mTextGroupName.setText("");
Toast.makeText(this, "Song successfully added", Toast.LENGTH_SHORT).show();
break;
case R.id.btn_add_song_name:
mAddSongDialog.show(getFragmentManager(), "AddSongNameDialog");
break;
case R.id.btn_add_song_lyrics:
mAddSongDialog.show(getFragmentManager(), "AddSongLyricsDialog");
break;
case R.id.btn_add_group:
mAddSongDialog.show(getFragmentManager(), "AddGroupNameDialog");
break;
default:
break;
}
}
@Override
public void onFinishEditGroupNameDialog(String inputText, ArrayList<String> perf_list) {
Toast.makeText(this, "Group name " + inputText + perf_list.size(), Toast.LENGTH_SHORT).show();
// ContentValues cvG = new ContentValues();
// cvG.put(mDatabaseHelper.GROUP_NAME, inputText); Вставить в поле mEditGroupName и потом добавлять всё сразу после нажатия на кнопку Add
// mDatabase.insert(mDatabaseHelper.TABLE_NAME_GROUP, mDatabaseHelper.GROUP_NAME, cvG);
mTextGroupName.setText(inputText);
performers_list = perf_list;
}
public List<String> getList() {
return performers_list;
}
@Override
public void onFinishEditSongNameDialog(String inputSongName) {
mTextSongName.setText(inputSongName);
}
@Override
public void onFinishEditSongLyricsDialog(String inputSongLyrics) {
mTextSongLyrics.setText(inputSongLyrics);
}
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("SongName", mTextSongName.getText().toString());
outState.putString("Lyrics", mTextSongLyrics.getText().toString());
outState.putString("Group", mTextGroupName.getText().toString());
}
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mTextSongName.setText(savedInstanceState.getString("SongName"));
mTextSongLyrics.setText(savedInstanceState.getString("Lyrics"));
mTextGroupName.setText(savedInstanceState.getString("Group"));
}
}
[/syntax]
Диалог
[syntax=java5]
package com.softfireway.windowchange;
import android.app.DialogFragment;
import android.os.Bundle;
import android.text.Editable;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
/**
* Created by Александр on 26.03.2015.
*/
public class AddSongDialog extends DialogFragment implements TextView.OnEditorActionListener {
public interface EditSongDetailsDialogListener {
void onFinishEditGroupNameDialog(String inputText, ArrayList<String> perf_list);
void onFinishEditSongNameDialog(String inputSongName);
void onFinishEditSongLyricsDialog(String inputSongLyrics);
}
private EditText mEditSongName;
private EditText mEditSongLyrics;
private EditText mEditGroupName;
private int count_performers;
public ArrayList<String> performers_list = new ArrayList<>();
TableLayout tbLayout;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = null;
Toast.makeText(this.getActivity(), getTag(), Toast.LENGTH_SHORT).show();
switch (getTag()) {
case "AddSongNameDialog":
v = inflater.inflate(R.layout.add_song_name_dialog, container);
mEditSongName = (EditText)v.findViewById(R.id.txt_song_name);
getDialog().setTitle("Song Name Editor");
mEditSongName.requestFocus();
getDialog().getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
mEditSongName.setOnEditorActionListener(this);
mEditSongName.setText(((TextView)getActivity().findViewById(R.id.tv_song_name)).getText());
break;
case "AddSongLyricsDialog":
v = inflater.inflate(R.layout.add_song_lyrics_dialog, container);
mEditSongLyrics = (EditText)v.findViewById(R.id.txt_song_lyrics);
getDialog().setTitle("Song Lyrics Editor");
mEditSongLyrics.requestFocus();
getDialog().getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
mEditSongLyrics.setOnEditorActionListener(this);
mEditSongLyrics.setText(((TextView)getActivity().findViewById(R.id.tv_song_lyrics)).getText());
break;
case "AddGroupNameDialog":
count_performers = 0;
v = inflater.inflate(R.layout.add_group_dialog, container);
mEditGroupName = (EditText)v.findViewById(R.id.txt_group_name);
Button mButtonAddPerformer = (Button)v.findViewById(R.id.btn_add_performer);
mButtonAddPerformer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count_performers++;
TableRow tbR = new TableRow(getDialog().getContext());
final EditText etNew = new EditText(getDialog().getContext());
Button btnNew = new Button(getDialog().getContext());
TableRow.LayoutParams lp = new TableRow.LayoutParams(MATCH_PARENT, WRAP_CONTENT, 1.0f);
etNew.setLayoutParams(lp);
etNew.setSingleLine();
btnNew.setText("Edit");
tbLayout.addView(tbR);
tbR.addView(btnNew);
tbR.addView(etNew);
btnNew.setId(count_performers);
etNew.setId(count_performers);
btnNew.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
performers_list.add(etNew.getText().toString());
Toast.makeText(getDialog().getContext(), "test " + view.getId() + " " + performers_list.size(), Toast.LENGTH_SHORT).show();
}
});
}
});
tbLayout = (TableLayout)v.findViewById(R.id.table_performer_list);
getDialog().setTitle("Group Editor");
mEditGroupName.requestFocus();
getDialog().getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
mEditGroupName.setOnEditorActionListener(this);
mEditGroupName.setText(((TextView) getActivity().findViewById(R.id.tv_group)).getText());
break;
default:
break;
}
return v;
}
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (EditorInfo.IME_ACTION_DONE == actionId) {
EditSongDetailsDialogListener activity = (EditSongDetailsDialogListener)getActivity();
switch (getTag()) {
case "AddGroupNameDialog":
activity.onFinishEditGroupNameDialog(mEditGroupName.getText().toString(), performers_list) ;
this.dismiss();
break;
case "AddSongLyricsDialog":
activity.onFinishEditSongLyricsDialog(mEditSongLyrics.getText().toString());
this.dismiss();
break;
case "AddSongNameDialog":
activity.onFinishEditSongNameDialog(mEditSongName.getText().toString());
this.dismiss();
break;
default:
break;
}
return true;
}
return false;
}
}
[/syntax]
Мне нужно добавлять данные в ArrayList, и потом в Активити хочу из него построить список, с этим вроде проблем нет. Завожу переменные и в Activity и в диалоге, передаю из Диалога в активити через интерфейс, но вот как обратно получить именно ArrayList я не смог разобраться. Ещё мне не нравится момент, что ArrayList сохраняется в Диалоге даже по выходу из него, почему так происходит я вроде понял, жизнь самого диалога соответствует жизни Активити, но у меня получается так что Активити, может жить долго а диалоги каждый раз будут разные. Поэтому мне кажется что можно либо, оставить ArrayList только в самом активити, и обращаться к нему из Диалога, но как это сделать я не смог найти, или оставить в самом Диалоге, но этот вариант мне не очень подходит. Вопрос в том, какой вариант лучше, и как реализовать обмен ArrayList между Активити, и Диалогом.
П.С. Мне нужно чтобы была возможность редактировать данные в диалоге, после добавления.
-Интерфейс на получение данных из диалога в Активити:
[syntax=java5]
@Override
public void onFinishEditGroupNameDialog(String inputText, ArrayList<String> perf_list) {
mTextGroupName.setText(inputText);
performers_list = perf_list;
}
[/syntax]
Основной код диалога... Да я понимаю что это жесть, но я только учусь, вычитал какие то методы пробую использовать)
[syntax=java5]
case "AddGroupNameDialog":
count_performers = 0;
v = inflater.inflate(R.layout.add_group_dialog, container);
mEditGroupName = (EditText)v.findViewById(R.id.txt_group_name);
Button mButtonAddPerformer = (Button)v.findViewById(R.id.btn_add_performer);
mButtonAddPerformer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count_performers++;
TableRow tbR = new TableRow(getDialog().getContext());
final EditText etNew = new EditText(getDialog().getContext());
Button btnNew = new Button(getDialog().getContext());
TableRow.LayoutParams lp = new TableRow.LayoutParams(MATCH_PARENT, WRAP_CONTENT, 1.0f);
etNew.setLayoutParams(lp);
etNew.setSingleLine();
btnNew.setText("Edit");
tbLayout.addView(tbR);
tbR.addView(btnNew);
tbR.addView(etNew);
btnNew.setId(count_performers);
etNew.setId(count_performers);
btnNew.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
performers_list.add(etNew.getText().toString());
Toast.makeText(getDialog().getContext(), "test " + view.getId() + " " + performers_list.size(), Toast.LENGTH_SHORT).show();
}
});
}
});
tbLayout = (TableLayout)v.findViewById(R.id.table_performer_list);
getDialog().setTitle("Group Editor");
mEditGroupName.requestFocus();
getDialog().getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
mEditGroupName.setOnEditorActionListener(this);
mEditGroupName.setText(((TextView) getActivity().findViewById(R.id.tv_group)).getText());
break;
[/syntax]
Из кода диалога вытекает второй вопрос.
2) Я динамически добавляю View - Button и EditText в таблицу.
Потом создаю обработчик кнопки, вроде бы я разобрался, как для каждой кнопки сделать свой обработчик, они даже работают. Но я не совсем понял каким образом к каждой кнопки, привязан нужный EditText, я пробовал получать Id которые задавал вручную, но что то не получалось в итоге сделав так:
[syntax=java5]
btnNew.setId(count_performers);
etNew.setId(count_performers);
btnNew.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
performers_list.add(etNew.getText().toString());
Toast.makeText(getDialog().getContext(), "test " + view.getId() + " " + performers_list.size(), Toast.LENGTH_SHORT).show();
}
});
[/syntax]
Всё заработало, но для меня это выглядит как магия...
Если нужно будет, но там всё очень плохо...
Сама Activity
[syntax=java5]
package com.softfireway.windowchange;
import android.app.DialogFragment;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Александр on 16.03.2015.
*/
public class AddSongActivity extends FragmentActivity implements AddSongDialog.EditSongDetailsDialogListener {
private LyricsDataBaseHelper mDatabaseHelper;
private SQLiteDatabase mDatabase;
private DialogFragment mAddSongDialog;
private TextView mTextSongName;
private TextView mTextSongLyrics;
private TextView mTextGroupName;
private List<String> performers_list = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_song_activity);
mDatabaseHelper = new LyricsDataBaseHelper(this);
mDatabase = mDatabaseHelper.getWritableDatabase();
mTextSongName = (TextView)findViewById(R.id.tv_song_name);
mTextSongLyrics = (TextView)findViewById(R.id.tv_song_lyrics);
mTextGroupName = (TextView)findViewById(R.id.tv_group);
mAddSongDialog = new AddSongDialog();
}
public void onClickDB(View view) {
switch (view.getId()) {
case R.id.btnAdd:
ContentValues cv = new ContentValues();
cv.put(mDatabaseHelper.SONGNAME, mTextSongName.getText().toString());
cv.put(mDatabaseHelper.LYRICS, mTextSongLyrics.getText().toString());
mDatabase.insert(mDatabaseHelper.TABLE_NAME_SONGS, null, cv);
mTextSongName.setText("");
mTextSongLyrics.setText("");
mTextGroupName.setText("");
Toast.makeText(this, "Song successfully added", Toast.LENGTH_SHORT).show();
break;
case R.id.btn_add_song_name:
mAddSongDialog.show(getFragmentManager(), "AddSongNameDialog");
break;
case R.id.btn_add_song_lyrics:
mAddSongDialog.show(getFragmentManager(), "AddSongLyricsDialog");
break;
case R.id.btn_add_group:
mAddSongDialog.show(getFragmentManager(), "AddGroupNameDialog");
break;
default:
break;
}
}
@Override
public void onFinishEditGroupNameDialog(String inputText, ArrayList<String> perf_list) {
Toast.makeText(this, "Group name " + inputText + perf_list.size(), Toast.LENGTH_SHORT).show();
// ContentValues cvG = new ContentValues();
// cvG.put(mDatabaseHelper.GROUP_NAME, inputText); Вставить в поле mEditGroupName и потом добавлять всё сразу после нажатия на кнопку Add
// mDatabase.insert(mDatabaseHelper.TABLE_NAME_GROUP, mDatabaseHelper.GROUP_NAME, cvG);
mTextGroupName.setText(inputText);
performers_list = perf_list;
}
public List<String> getList() {
return performers_list;
}
@Override
public void onFinishEditSongNameDialog(String inputSongName) {
mTextSongName.setText(inputSongName);
}
@Override
public void onFinishEditSongLyricsDialog(String inputSongLyrics) {
mTextSongLyrics.setText(inputSongLyrics);
}
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("SongName", mTextSongName.getText().toString());
outState.putString("Lyrics", mTextSongLyrics.getText().toString());
outState.putString("Group", mTextGroupName.getText().toString());
}
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mTextSongName.setText(savedInstanceState.getString("SongName"));
mTextSongLyrics.setText(savedInstanceState.getString("Lyrics"));
mTextGroupName.setText(savedInstanceState.getString("Group"));
}
}
[/syntax]
Диалог
[syntax=java5]
package com.softfireway.windowchange;
import android.app.DialogFragment;
import android.os.Bundle;
import android.text.Editable;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
/**
* Created by Александр on 26.03.2015.
*/
public class AddSongDialog extends DialogFragment implements TextView.OnEditorActionListener {
public interface EditSongDetailsDialogListener {
void onFinishEditGroupNameDialog(String inputText, ArrayList<String> perf_list);
void onFinishEditSongNameDialog(String inputSongName);
void onFinishEditSongLyricsDialog(String inputSongLyrics);
}
private EditText mEditSongName;
private EditText mEditSongLyrics;
private EditText mEditGroupName;
private int count_performers;
public ArrayList<String> performers_list = new ArrayList<>();
TableLayout tbLayout;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = null;
Toast.makeText(this.getActivity(), getTag(), Toast.LENGTH_SHORT).show();
switch (getTag()) {
case "AddSongNameDialog":
v = inflater.inflate(R.layout.add_song_name_dialog, container);
mEditSongName = (EditText)v.findViewById(R.id.txt_song_name);
getDialog().setTitle("Song Name Editor");
mEditSongName.requestFocus();
getDialog().getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
mEditSongName.setOnEditorActionListener(this);
mEditSongName.setText(((TextView)getActivity().findViewById(R.id.tv_song_name)).getText());
break;
case "AddSongLyricsDialog":
v = inflater.inflate(R.layout.add_song_lyrics_dialog, container);
mEditSongLyrics = (EditText)v.findViewById(R.id.txt_song_lyrics);
getDialog().setTitle("Song Lyrics Editor");
mEditSongLyrics.requestFocus();
getDialog().getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
mEditSongLyrics.setOnEditorActionListener(this);
mEditSongLyrics.setText(((TextView)getActivity().findViewById(R.id.tv_song_lyrics)).getText());
break;
case "AddGroupNameDialog":
count_performers = 0;
v = inflater.inflate(R.layout.add_group_dialog, container);
mEditGroupName = (EditText)v.findViewById(R.id.txt_group_name);
Button mButtonAddPerformer = (Button)v.findViewById(R.id.btn_add_performer);
mButtonAddPerformer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count_performers++;
TableRow tbR = new TableRow(getDialog().getContext());
final EditText etNew = new EditText(getDialog().getContext());
Button btnNew = new Button(getDialog().getContext());
TableRow.LayoutParams lp = new TableRow.LayoutParams(MATCH_PARENT, WRAP_CONTENT, 1.0f);
etNew.setLayoutParams(lp);
etNew.setSingleLine();
btnNew.setText("Edit");
tbLayout.addView(tbR);
tbR.addView(btnNew);
tbR.addView(etNew);
btnNew.setId(count_performers);
etNew.setId(count_performers);
btnNew.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
performers_list.add(etNew.getText().toString());
Toast.makeText(getDialog().getContext(), "test " + view.getId() + " " + performers_list.size(), Toast.LENGTH_SHORT).show();
}
});
}
});
tbLayout = (TableLayout)v.findViewById(R.id.table_performer_list);
getDialog().setTitle("Group Editor");
mEditGroupName.requestFocus();
getDialog().getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
mEditGroupName.setOnEditorActionListener(this);
mEditGroupName.setText(((TextView) getActivity().findViewById(R.id.tv_group)).getText());
break;
default:
break;
}
return v;
}
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (EditorInfo.IME_ACTION_DONE == actionId) {
EditSongDetailsDialogListener activity = (EditSongDetailsDialogListener)getActivity();
switch (getTag()) {
case "AddGroupNameDialog":
activity.onFinishEditGroupNameDialog(mEditGroupName.getText().toString(), performers_list) ;
this.dismiss();
break;
case "AddSongLyricsDialog":
activity.onFinishEditSongLyricsDialog(mEditSongLyrics.getText().toString());
this.dismiss();
break;
case "AddSongNameDialog":
activity.onFinishEditSongNameDialog(mEditSongName.getText().toString());
this.dismiss();
break;
default:
break;
}
return true;
}
return false;
}
}
[/syntax]
