0

私のコード:

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 は自動的に固執します。スティックは、LIstViewを下にスライドすると、ListViewがデータを再度バインドし、ListViewの上に表示することです。

問題を解決するには?ListView を制御するにはどうすればよいですか?

4

1 に答える 1

0

リストビューとアダプターの作成を繰り返さないでください。リストビューとアダプターの作成を繰り返すと、表示リストは新しいリストになり、現在の位置ではなくリストビューの上部に表示されます。したがって、リストとアダプターを一度作成し、新しいアイテムをリストにバインドしたいときはいつでも、アダプターのデータを更新して以下のように呼び出します。

 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;
    }
}
}

これが役立つと思います。

于 2013-01-11T05:27:14.623 に答える