一個ListView的使用

主代碼

public class MainActivity extends Activity {

    ListView lv;
    ArrayAdapter<String> Adapter;
    ArrayList<String> arr=new ArrayList<String>();
    @Override
    public void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);
             lv=(ListView)findViewById(R.id.lv);
             arr.add("123");
             arr.add("234");
             arr.add("345");
             Adapter = new ArrayAdapter<String>(this,R.layout.cell, arr);
             lv.setAdapter(Adapter);
             lv.setOnItemClickListener(lvLis); 
             editItem edit= new editItem();
             edit.execute("0","第1項");//把第一項內容改爲"第一項"
             Handler handler=new Handler();
             handler.postDelayed(add,3000);//延遲3秒執行
         }
         Runnable add=new Runnable(){

             @Override
             public void run() {
                 // TODO Auto-generated method stub
                 arr.add("增加一項");//增加一項
                 Adapter.notifyDataSetChanged();    
             }       
         };
         class editItem extends AsyncTask<String,Integer,String>{
             @Override
             protected String doInBackground(String... params) {
                     arr.set(Integer.parseInt(params[0]),params[1]);
                     //params得到的是一個數組,params[0]在這裏是"0",params[1]是"第1項"
                     //Adapter.notifyDataSetChanged();
                     //執行添加後不能調用 Adapter.notifyDataSetChanged()更新UI,因爲與UI不是同線程
                     //下面的onPostExecute方法會在doBackground執行後由UI線程調用
                 return null;    
             }

            @Override
            protected void onPostExecute(String result) {
                 // TODO Auto-generated method stub
                 super.onPostExecute(result);
                 Adapter.notifyDataSetChanged();
                 //執行完畢,更新UI
             }

         }
         private OnItemClickListener lvLis=new OnItemClickListener(){
             @Override
             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                     long arg3) {
                //點擊條目時觸發
                 //arg2即爲點中項的位置
                 setTitle(String.valueOf(arr.get(arg2)));

             }

         };
}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${relativePackage}.${activityClass}" >
    <ListView 
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</RelativeLayout>

cell.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView 
  android:id="@+id/text1"
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="30dp"
  android:textSize="18sp"
></TextView>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章