Здравствуйте, форумчане.
Помоги, как написать код правильно, в main.xml (из папки layout) там список и кнопка. Список в ArrayList<String> написано в MainActivity.java. Файл added.xml там только EditText для диалоговое окно. в MainActivity список заполненными и нажимаю кнопку New Button, то появляется окно диалоговое и ввожу текст в EditText и кнопка OK для добавления в список в MainActivity. Как реализовывать извлечения текста из EditText в список. Сам разобрался и получается приложение остановлено... Исправить где то в MainActivity в последние строки [syntax=java]OK.putExtra("add_list", edTt.getText().toString());
adapter.add(getIntent().getStringExtra("add_list"));
adapter.notifyDataSetChanged();[/syntax]
main.xml
[syntax=xml]<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="
http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@android:id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_above="@+id/button" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:onClick="onClick" />
</RelativeLayout>
[/syntax]
MainActivity.java
[syntax=java]
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.EditText;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Arrays;
public class MainActivity extends ListActivity {
EditText edTt;
Intent OK;
// определяем массив типа String
final String[] catnames = new String[] { "Рыжик", "Барсик", "Мурзик", "Мурка", "Васька",
"Томасина", "Бобик", "Кристина" };
private ArrayAdapter<String> adapter;
private String selectedItem;
private final Context context = this;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
edTt = (EditText) findViewById(R.id.edTt);
OnItemClickListener itemListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Вы выбрали " + parent
.getItemAtPosition(position).toString(),Toast.LENGTH_SHORT).show();
}
};
OnItemLongClickListener itemLongListener = new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
// сохраним выбранный пункт в глобальной переменной
selectedItem = parent.getItemAtPosition(position).toString();
// Build new AlertDialog
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Вы хотите удалить " + selectedItem + "?");
builder.setCancelable(false);
builder.setPositiveButton("Да", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
adapter.remove(selectedItem);
adapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(), selectedItem + " удалён",
Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("Нет", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
// выводим диалоговое окно
builder.show();
return true;
}
};
ArrayList<String> list = new ArrayList<String>(Arrays.asList(catnames));
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
// присваиваем адаптер списку
setListAdapter(adapter);
getListView().setOnItemClickListener(itemListener);
getListView().setOnItemLongClickListener(itemLongListener);
}
public AlertDialog onClick(View v) {
// кнопка "добавить" для появления диалоговое окно на новый предмет в список"
LayoutInflater factory = LayoutInflater.from(this);
final View textEntryView = factory.inflate(R.layout.added, null);
return new AlertDialog.Builder(MainActivity.this)
.setIcon(R.drawable.ic_launcher)
.setTitle(R.string.add_title)
.setMessage(R.string.add_text)
.setView(textEntryView)
.setCancelable(true)
.setPositiveButton(R.string.btnOK, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
OK.putExtra("add_list", edTt.getText().toString());
adapter.add(getIntent().getStringExtra("add_list"));
adapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(), "123",
Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("Отмена", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Toast.makeText(getApplicationContext(), "Отмененно",
Toast.LENGTH_SHORT).show();
}
})
.setOnCancelListener(new DialogInterface.OnCancelListener() {
public void onCancel(DialogInterface dialog) {
Toast.makeText(getApplicationContext(), "Отмененно",
Toast.LENGTH_SHORT).show();
}
}).show();
}
}
[/syntax]
added.xml
[syntax=xml]
<RelativeLayout xmlns:android="
http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/edTt"
android:height="40dp"
android:textSize="20dp"
android:width="250dp"
android:hint="@string/add_txt"
android:layout_centerHorizontal="true" />
</RelativeLayout>[/syntax]