1. Yeni bir ToDoItem sınıfı
yaratın. Bu sayede görev ve oluşturma tarihleri kayıt edilmeye başlar. Öğe
verilerinin bir özetini geri döndürmek için toString
yöntemini kullanın.
package
com.paad.todolist;
import
java.text.SimpleDateFormat;
import
java.util.Date;
public class ToDoItem {
public String getTask() {
return task;
}
String task;
public Date getCreated() {
return created;
}
Date created;
public ToDoItem(String _task) {
this(_task, new Date(java.lang.System.currentTimeMillis()));
}
public ToDoItem(String _task,
Date _created) {
task = _task;
created = _created;
}
@Override
public String toString() {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy");
return "(" + sdf.format(created) + ") " + task;
}
}
2. ToDoItem nesnelerini saklamak için ToDoList
aktivitesini açın ve ArrayList ve ArrayAdapter değişken türlerini
değiştirin. Daha sonra ilgili değişkeni başlatmak ve güncellemek için onCreate yöntemini kullanmalısınız.
Ayrıca ToDoItem nesnelerine destek
için onKeyListener işleyicisi de
güncellemeniz gerekir.
private ArrayList<ToDoItem>
todoItems;
private ListView myListView;
private EditText myEditText;
private ToDoItemAdapter aa;
private boolean addingNew = false;
static final private int ADD_NEW_TODO = Menu.FIRST;
static final private int REMOVE_TODO = Menu.FIRST + 1;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
myListView = (ListView)findViewById(R.id.myListView);
myEditText = (EditText)findViewById(R.id.myEditText);
todoItems = new
ArrayList<ToDoItem>();
aa = new
ToDoItemAdapter(getApplicationContext(), R.layout.todolist_item,
todoItems);
myListView.setAdapter(aa);
myEditText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() ==
KeyEvent.ACTION_DOWN)
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
ToDoItem newItem = new ToDoItem(myEditText.getText().toString());
todoItems.add(0, newItem);
myEditText.setText("");
aa.notifyDataSetChanged();
cancelAdd();
return true;
}
return false;
}
});
registerForContextMenu(myListView);
}
3. Şimdi her bir ToDo List öğesi için özelleştirilmiş yerleşim
yaratabilirsiniz.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:background="@color/notepad_paper">
<TextView
android:id="@+id/rowDate"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:padding="10dp"
android:scrollbars="vertical"
android:fadingEdge="vertical"
android:textColor="@color/notepad_text"
android:layout_alignParentRight="true"
/>
<TextView
android:id="@+id/row"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:scrollbars="vertical"
android:fadingEdge="vertical"
android:textColor="@color/notepad_text"
android:layout_alignParentLeft="@+id/rowDate"
/>
</RelativeLayout>
4. ToDoItem’ın belirli bir varyasyonu olan bir ArrayAdapter
genişleterek yeni bir sınıf (toDoItemAdapter)
oluşturun. 3. Adımda oluşturduğunuz yerleşimde görüntülenen ToDoItem nesnesinin
görev ve tarih özelliklerini atamak için getView’u
yok sayın.
package
com.paad.todolist;
import
java.text.SimpleDateFormat;
import
android.content.Context;
import
java.util.*;
import
android.view.*;
import
android.widget.*;
public class ToDoItemAdapter extends ArrayAdapter<ToDoItem> {
int resource;
public ToDoItemAdapter(Context
_context, int _resource,
List<ToDoItem> _items) {
super(_context, _resource,
_items);
resource = _resource;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LinearLayout todoView;
ToDoItem item = getItem(position);
String taskString = item.getTask();
Date createdDate = item.getCreated();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy");
String dateString = sdf.format(createdDate);
if (convertView == null) {
todoView = new
LinearLayout(getContext());
String inflater = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater vi =
(LayoutInflater)getContext().getSystemService(inflater);
vi.inflate(resource, todoView, true);
} else {
todoView = (LinearLayout) convertView;
}
TextView dateView = (TextView)todoView.findViewById(R.id.rowDate);
TextView taskView = (TextView)todoView.findViewById(R.id.row);
dateView.setText(dateString);
taskView.setText(taskString);
return todoView;
}
}
5. ToDoItemAdapter ile ArrayAdapter’ün
deklarasyonunu yenileyin.
private ArrayList<ToDoItem>
todoItems;
private ListView myListView;
private EditText myEditText;
private ToDoItemAdapter aa;
private boolean addingNew = false;
static final private int ADD_NEW_TODO = Menu.FIRST;
static final private int REMOVE_TODO = Menu.FIRST + 1;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
myListView = (ListView)findViewById(R.id.myListView);
myEditText = (EditText)findViewById(R.id.myEditText);
todoItems = new
ArrayList<ToDoItem>();
aa = new
ToDoItemAdapter(getApplicationContext(), R.layout.todolist_item,
todoItems);
myListView.setAdapter(aa);
myEditText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() ==
KeyEvent.ACTION_DOWN)
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
ToDoItem newItem = new ToDoItem(myEditText.getText().toString());
todoItems.add(0, newItem);
myEditText.setText("");
aa.notifyDataSetChanged();
cancelAdd();
return true;
}
return false;
}
});
registerForContextMenu(myListView);
}
Yorumlar
Yorum Gönder