获取Android中列表项的位置

时间:2012-01-18 01:43:56

标签: java android oncreate

所以我在这里上课:

package phil.droid.game;


import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;

public class GameList extends GamesTrialActivity
{

private ListView lv1;
protected String Game_names[]={"God of War","FOS RO DAH", "dhwaud"};
private String Game_pics[]={"God of War","God of War II"};
private int pos;
public void onCreate(Bundle savedInstanceState) 
{   
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gamelist);
    lv1=(ListView)findViewById(R.id.thegamelist);

   lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , Game_names));
   lv1.setOnItemClickListener(new OnItemClickListener() 
    {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
            {


                    pos = position;       
                Intent i = new Intent(GameList.this, game_viewer.class);
                startActivity(i);

            }
    });


}               
}

然后这个VclassV扩展^ ^ ^ / / p>

package phil.droid.game;

import android.os.Bundle;
import android.widget.TextView;
public class game_viewer extends GameList
{


    public void onCreate(Bundle savedInstanceState)
    {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.game_template);

            TextView game_title = (TextView)findViewById(R.id.GameTitle);
            game_title.setText("" + pos);
    }
}

问题是,无论我点击什么选项,最后一位都将“pos”识别为“0”。有人可以建议一种方法来使它成为pos被识别为在上一课中点击的数字元素吗?

2 个答案:

答案 0 :(得分:2)

制作pos protected,而不是private

答案 1 :(得分:1)

您尝试执行的操作无效:新启动的活动将不会与父级共享相同的存储,即使它们继承也是如此。唯一可行的方法是,如果值是静态的,但这也不是一个好主意。

您应该做的是在开始活动之前将数据作为意图的一部分发送,例如:

intent.putExtra("pos", position);

然后您可以使用

在新活动中将其拉出来
getIntent().getIntExtra("pos", -1); // -1 is used as default value

此外,game_viewer最有可能是一个单独的活动,而不是从GameList继承。