2013-01-10 65 views
0

我的代碼:列表數組綁定ListView和更新數據和ListView堅持

adapter = new SimpleAdapter(this.Context, Arraylist, R.layout.activity_lxxx_show, 
new String[] 
{ 
"_id", "line_id", "sort_order", "station_name", "status", 
"Top_colour", "Bottom_colour", "Left_colour", "Right_colour" 
}, 
new int[] 
{ 
R.id._id, R.id.tv_line_id, R.id.tv_sort_order, R.id.tv_station_name, R.id.tv_status, 
R.id.imageView_Top, R.id.imageView_Bottom, R.id.imageView_Left, R.id.imageView_Right 
}); 
lv = (ListView) this.Context.findViewById(R.id.listView_lxxx); 
lv.setAdapter(adapter); //display data in ListView 

adapter.notifyDataSetChanged(); 

我需要調用此代碼重複的一段時間。我想將不同的Arraylist數據綁定到Adapter。它可以當前更新數據。

但ListView自動粘貼。 Stick是當我將LIstView滑動到底部時,ListView再次綁定數據並顯示在ListView的頂部。

如何解決問題?我怎樣才能控制ListView?

+0

發佈一些代碼,你在做什麼來將數據附加到適配器。 – Raj

+0

@ Raj感謝您的評論。看到我的問題。我已經編輯它。 – bonnie

回答

0

不重複創建listview和適配器。如果您重複創建列表視圖和適配器,則顯示列表將成爲一個新列表,它將顯示列表視圖的頂部而不是當前位置。因此,創建列表和適配器一次,並且當您想要將新項目綁定到列表時,只需更新適配器的數據並像下面那樣調用即可。

adapter.notifyDataSetChanged(); 

請檢查我在下面發佈的示例。

public class GrowingListViewActivity extends ListActivity implements OnScrollListener { 
Aleph0 adapter = new Aleph0(); 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setListAdapter(adapter); 
    getListView().setOnScrollListener(this); 
} 

public void onScroll(AbsListView view, int firstVisible, int visibleCount, 
     int totalCount) { 

    boolean loadMore = /* maybe add a padding */ 
    firstVisible + visibleCount >= totalCount; 

    if (loadMore) { 
     adapter.count += visibleCount; // or any other amount 
     adapter.notifyDataSetChanged(); 
    } 
} 

public void onScrollStateChanged(AbsListView v, int s) { 
} 

class Aleph0 extends BaseAdapter { 

    int count = 40; /* starting amount */ 

    public int getCount() { 
     return count; 
    } 

    public Object getItem(int pos) { 
     return pos; 
    } 

    public long getItemId(int pos) { 
     return pos; 
    } 

    public View getView(int pos, View v, ViewGroup p) { 
     TextView view = new TextView(GrowingListViewActivity.this); 
     view.setText("entry View : " + pos); 
     return view; 
    } 
} 
} 

我想這會幫助你。