Android中的ToDoList(定製ArrayAdapter)

來源:互聯網
上載者:User

環境: Android Studio 0.5.1

ArrayAdapter使用泛型(模板)把Adapter視圖綁定到一個指定類的對象的數組;

定製ArrayAdapter需要重寫getView()方法, 向布局視圖指派至屬性;

ToDoList在每一項後面添加時間, 需要建立ToDoItem對象, 使用定製的ArrayAdapter;

步驟:

1. 建立ToDoItem對象

位置: java->package->ToDoItem

package mzx.spike.todolist.app;        import java.text.SimpleDateFormat;  import java.util.Date;        /**  * Created by Administrator on 14-3-17.  */public class ToDoItem {      String task;      Date created;            public String getTask() {          return task;      }            public Date getCreated() {          return 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");          String dateString = sdf.format(created);          return "(" + dateString + ") " + task;      }  }

詳解:

兩個私人變數, 儲存任務(task)和日期(date), 兩種構造方法, 重寫了toString方法;

2. 修改todolist_item布局(xml)

位置: res->layout->todolist_item.xml

<?xml version="1.0" encoding="utf-8"?>        <RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">            <TextView        android:id="@+id/rowDate"        android:layout_width="wrap_content"        android:layout_height="match_parent"        android:background="@color/notepad_paper"        android:padding="10dp"        android:scrollbars="vertical"        android:requiresFadingEdge="vertical"        android:textColor="#F000"        android:layout_alignParentRight="true"     />            <mzx.spike.todolist.app.ToDoListItemView        android:id="@+id/row"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:padding="10dp"        android:scrollbars="vertical"        android:requiresFadingEdge="vertical"        android:textColor="@color/notepad_text"        android:layout_toLeftOf="@+id/rowDate"     />  </RelativeLayout>

詳解:

1. 使用RelativeLayout(相關)布局;

2. TextView儲存日期(date);

3. ToDoListItemView(定製, java)儲存任務(task);

4. layout_toLeftOf屬性, 表示位於某個視圖的左邊;

5. fadingEdge標籤, 褪去邊緣, 遺棄, 被requiresFadingEdge標籤代替;

3. 建立ToDoItemAdapter, 定製適配器

位置: java->package->ToDoItemAdapter

package mzx.spike.todolist.app;        import android.content.Context;  import android.view.LayoutInflater;  import android.view.View;  import android.view.ViewGroup;  import android.widget.ArrayAdapter;  import android.widget.LinearLayout;  import android.widget.TextView;        import java.text.SimpleDateFormat;  import java.util.Date;  import java.util.List;        /**  * Created by Administrator on 14-3-17.  */public class ToDoItemAdapter extends ArrayAdapter<ToDoItem> {      int resource;            public ToDoItemAdapter(Context context, int _resource, List<ToDoItem> items) {          super(context, _resource, items);          this.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 li;              li = (LayoutInflater)getContext().getSystemService(inflater);              li.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;      }  }

詳解:

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.