[TUT] Add item vào đuôi ListView

Thảo luận trong 'Điện thoại, viễn thông' bắt đầu bởi emkhongbundau, 3/9/12.

  1. emkhongbundau New Member

    emkhongbundau

    Tham gia ngày:
    2/9/12
    Bài viết:
    0
    Đã được thích:
    0
    Điểm thành tích:
    0
    Hôm nay mình sẽ viết bài TUT hướng dẫn các bạn tạo một ListView có thể add thêm các item vào đuôi bất cứ lúc nào, nếu bạn muốn phát triển một ứng dụng đọc tin tức trên Android, thì TUT này sẽ giải quyết vấn đề phân trang của các bạn. Hôm qua 10-3-2011 bên Tinhte.vn cũng cho ra phần mềm đọc tin trên Android, một cty nước ngoài phát triển, cách phân trang của họ là dùng Dialog. Ở bài TUT này mình sẽ hướng dẫn các bạn dùng ProgressBar chạy nền phía dưới, trong quá trình load dữ liệu thì ta vẫn có thể thao tác được, điểm này hơn hẳn việc dùng Dialog.
    Ở đây mình kết hợp giữa AsyncTaskrunOnUiThread sẽ giúp ProgressBar chạy mượt hơn và không bị force close khi update item trong ListView
    Đây là hình em nó:
    [​IMG]
    AddTailListView.java

    PHP:
    package com.vietandroid.add.tail.list.view;import android.app.Activity;import android.opengl.Visibility;import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.provider.Contacts.Intents.UI;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.ListView;import android.widget.ProgressBar;import android.widget.TextView; public class AddTailListView extends Activity {    AddTailAdapter adapter;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        ListView list=(ListView)findViewById(R.id.list);        final AddTailAdapter adapter=new AddTailAdapter(this);        LayoutInflater inflater getLayoutInflater();        list.addFooterView(inflater.inflate(R.layout.addbuttonnullfalse));        list.setAdapter(adapter);        Button b=(ButtonfindViewById(R.id.button1);        final ProgressBar pro=(ProgressBar)findViewById(R.id.progressBar1);        pro.setVisibility(View.INVISIBLE);        b.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                new AsyncTask<VoidVoidVoid>() {                    protected Void doInBackground(Void... params) {                        try {                            Thread.sleep(1000);                                                     } catch (InterruptedException e) {                            // TODO Auto-generated catch block                            e.printStackTrace();                        }                                                return null;                    }                    protected void onPreExecute() {                        pro.setVisibility(View.VISIBLE);                     };                    protected void onPostExecute(Void result) {                        pro.setVisibility(View.INVISIBLE);                                                 runOnUiThread(new Runnable() {                            public void run() {                                adapter.addTail();                            }                        });                    };                }.execute();            }        });    }}
    AddTailAdapter.java

    PHP:
    package com.vietandroid.add.tail.list.viewimport java.util.ArrayListimport android.view.View;import android.view.ViewGroup;import android.view.LayoutInflaterimport android.content.Contextimport android.widget.BaseAdapter;import android.widget.TextView; public class AddTailAdapter extends BaseAdapter {    private LayoutInflater mInflater;    private ArrayList<Stringdata = new ArrayList<String>();         public AddTailAdapter(Context context) {         data.add("Item: 1");        data.add("Item: 2");        data.add("Item: 3");        data.add("Item: 4");        mInflater LayoutInflater.from(context);    }         @Override    public int getCount() {        return data.size();    }     @Override    public Object getItem(int item) {        return item;    }     @Override    public long getItemId(int position) {        return position;    }     @Override    public View getView(int positionView convertViewViewGroup parent) {        ViewHolder holder;                 if (convertView == null) {            convertView    mInflater.inflate(R.layout.listitemnull);                         holder         = new ViewHolder();                         holder.mTitleText    = (TextViewconvertView.findViewById(R.id.textView1);                         convertView.setTag(holder);        } else {            holder = (ViewHolderconvertView.getTag();        }        holder.mTitleText.setText(data.get(position));                 return convertView;    }     static class ViewHolder {        TextView mTitleText;    }    public void addTail() {        //Add 5 item vào đuôi        for(int i=0;i<5;i++){            data.add("Item: "+(data.size()+1));        }        notifyDataSetChanged();    }}

    Source Code cho các bạn: Free Cloud Storage - MediaFire
    File APK cho các bạn: Free Cloud Storage - MediaFire


    ChinhLX
    Nguồn: vietandroid
     
    Đang tải...
  2. thinhdt1 New Member

    thinhdt1

    Tham gia ngày:
    17/1/13
    Bài viết:
    65
    Đã được thích:
    28
    Điểm thành tích:
    0
    Giới tính:
    Nam
    Link bài này lỗi rồi , mong admin xem lại .
     

Chia sẻ trang này