Listview滚动位置

时间:2014-01-17 11:16:46

标签: android listview

我有Listview图像和文本,我可以用list.setOnItemClickListener方法显示图像和文本,当我点击listview项目然后打开新活动,我可以显示详细信息。在第二个活动我有一个按钮(回去),我想当我点击这个按钮listview将是我第一次点击的位置 例如,如果我点击listview 5项,然后当我点击后退按钮我想这5项将是第一个位置

list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                journal = (TextView) view.findViewById(R.id.smalljournal);

                tittle = (TextView) view.findViewById(R.id.smalltitle);
                description = (TextView) view
                        .findViewById(R.id.smallDescription);
                smalllink = (TextView) view.findViewById(R.id.smalllink);
                DateTime = (TextView) view.findViewById(R.id.smallDateTime);
                smallstatID = (TextView) view
                        .findViewById(R.id.smallstatID);
                String Stringjournal = journal.getText().toString();
                String Stringtittle = tittle.getText().toString();
                String Stringdescription = description.getText().toString();
                String Stringlink = smalllink.getText().toString();
                String StringdateTime = DateTime.getText().toString();
                String StringstatID = smallstatID.getText().toString();
                HideKeyBoadr();
                Intent in = new Intent(MainActivity.this, Result.class);
                in.putExtra("KEY_journal", Stringjournal);
                in.putExtra("KEY_title", Stringtittle);
                in.putExtra("KEY_description", Stringdescription);
                in.putExtra("KEY_link", Stringlink);
                in.putExtra("KEY_pubDate", StringdateTime);
                in.putExtra("KEY_statID", StringstatID);

                String url = itemList.get(position).get(
                        MainActivity.KEY_image);
                if (url.endsWith("-c.jpg"))
                    url = url.replace("-c.jpg", ".jpg");

                in.putExtra("Bitmap", url);

                startActivity(in);
                overridePendingTransition(R.anim.trans_left_in,
                        R.anim.trans_left_out);
                finish();

            }
        });
    }

第二项活动

BackButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent in = new Intent(Result.this, MainActivity.class);
            startActivity(in);

            overridePendingTransition(R.anim.trans_right_in,
                    R.anim.trans_right_out);
            finish();

        }
    });

程序工作完美但当我点击后退按钮时listview再次显示.....

3 个答案:

答案 0 :(得分:1)

不要调用finish();在你的第一个活动

答案 1 :(得分:0)

listView.setSelection(位置);将所选行发送到ListView的顶部。 listView.setSelectionFromTop(position,20);此方法还会发送ListView的所选行顶部。但是第二个参数(在这个方法20中)ListView的上边缘的距离。 (包括填充) 如果您需要完成第一个活动,则需要保存项目的位置,当单击后退按钮时,将保存的位置发送到您的活动。 (捆绑,静态等等......)

答案 2 :(得分:0)

<强> IDEA

您只需创建第二个活动而不调用finish()。当用户点击第二个活动中的后退按钮时,只需调用onBackPressed();恢复第一次活动。

所以不要在第一个活动中使用finish()方法,并在secound活动中使用onBackPressed()。

你应该做什么:

在第一项活动中:

 @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
           //your logic gose here
           // start new activity without finishing current activity
}

在新活动中:

只需调用onBackPressed();在第二个活动中。它将完成第二个活动并自动恢复第一个活动。

BackButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
           //call onBackPressed(); to resume privious activity.
            onBackPressed();

        }
    });