Получение позиции элемента списка в Android - PullRequest
0 голосов
/ 18 января 2012

Итак, у меня есть этот класс здесь:

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 расширяет один ^ выше ^

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 "as" 0 "независимо от того, какую опцию я нажимаю.Может кто-нибудь предложить способ сделать так, чтобы pos распознавался как элемент числа, на который нажимали в предыдущем классе?

Ответы [ 2 ]

2 голосов
/ 18 января 2012

Марка pos protected, а не private.

1 голос
/ 18 января 2012

То, что вы пытаетесь сделать, не работает: вновь запущенное действие не будет совместно использовать то же хранилище, что и родительское, даже если они наследуют. Это возможно только в том случае, если значение было статическим, но это тоже не очень хорошая идея.

Вместо этого вы должны отправить данные как часть намерения до начала действия, например ::100100

intent.putExtra("pos", position);

и затем вы можете вытащить его в новом упражнении с помощью

getIntent().getIntExtra("pos", -1); // -1 is used as default value

Кроме того, game_viewer скорее всего должно быть отдельным действием, а не наследоваться от GameList.

...