将项目添加到textview和滚动条保持一致

时间:2014-10-11 15:27:09

标签: android listview

我正在开发Android应用。在我的应用中有一项活动,它有一个ListViewListView元素动态(以编程方式)更改。但是当我添加一个新元素时,listview会滚动并且我不想要它。我想向listview添加元素,用户只有在用户与其交互时才会看到新元素,而不是自动查看。我在listview适配器上调用notifyDataSetChanged()

我有一个例子来澄清我的意思:

ListView contains = **{ 1 , 2 , 3 , 4 , 5}

但屏幕尺寸只允许其中3个。假设现在{3, 4, 5}在屏幕上。

现在,我们添加'6'元素,listview自动滚动到顶部,屏幕显示{4 , 5 , 6}

我想在添加'6'元素时,listview不要滚动并显示相同的内容(要保持一致),如果用户与listview进行交互并滚动,他看到了'6'元素。

2 个答案:

答案 0 :(得分:0)

更新列表后,只需致电listView.setSelectionAfterHeaderView();

答案 1 :(得分:0)

我也是新手。 我尝试在按钮点击时向listview添加元素,我没有遇到这些问题....

<RelativeLayout
 ...>
<ListView
    android:id="@+id/listView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="133dp">
</ListView>
<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="55dp"
    android:text="Button" />

public class MainActivity extends Activity {
    ListView lv;
    Button btn;
    int counter = 0;
    ArrayAdapter<String> adapter;
    ArrayList<String> array = new ArrayList<String>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv = (ListView) findViewById(R.id.listView1);
        btn = (Button) findViewById(R.id.button1);
        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, array);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                String s = "Clicked "+ ++counter;
                array.add(s); 
                adapter.notifyDataSetChanged();
            }
        });
        lv.setAdapter(adapter);
    }
}

它不会自动滚动到底部 但是如果你添加

android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"

到listview xml,然后在向listview添加新元素时自动滚动到底部。

我希望它有所帮助。