2013-10-19 48 views
0

我想實現2個活動,一個是帶有圖像和文本的列表視圖,現在運行良好。另一個是onClicklistener,當我點擊任何ListItem時,它將啓動另一個活動來顯示更多信息,上一個按鈕和下一個按鈕可查看上一個或下一個信息。但是按鈕有問題。它只能看到前一個和下一個。這意味着你不能單擊下一個按鈕兩次。任何建議將不勝感激。如何實現上一個和下一個按鈕

這裏是我的主要活動代碼

package com.example.manchesterunited; 


import com.example.manchesterunited.R; 
import android.os.Bundle; 
import android.app.AlertDialog; 
import android.app.ListActivity; 
import android.content.Intent; 

import android.view.View; 

import android.widget.ListView; 

import android.widget.Toast; 

public class MainActivity extends ListActivity { 


static PlayerData data = new PlayerData(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


CustomAdapter adapter = new CustomAdapter(this); 

setListAdapter(adapter); 

} 



public void onListItemClick(ListView l,View v, int pos, long id){ 
    int playerId = (int)id; 
    Toast.makeText(getApplicationContext(),"Selected  "+data.getName(pos),Toast.LENGTH_SHORT).show(); 

    Intent intent = new Intent(this, InfoActivity.class); 
    intent.putExtra("playerId", playerId); 
    startActivity(intent); 

} 
} 

這裏是次活動

package com.example.manchesterunited; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 

public class InfoActivity extends Activity { 

TextView dobText; 
TextView pobText; 
TextView internationalText; 
Button prevButton; 
Button nextButton; 
PlayerData data = new PlayerData(); 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_info); 

    dobText = (TextView)findViewById(R.id.textView1); 
    pobText = (TextView)findViewById(R.id.textView2); 
    internationalText = (TextView)findViewById(R.id.textView3); 
    prevButton = (Button)findViewById(R.id.prev); 
    nextButton = (Button)findViewById(R.id.next); 
    Intent intent = getIntent(); 
    final int playerId = intent.getExtras().getInt("playerId"); 
    dobText.setText("Birthdate:"+String.valueOf(data.getPlayer(playerId).getDob())); 
     pobText.setText("Birthplace:"+String.valueOf(data.getPlayer(playerId).getPob())); 
     internationalText.setText("International:"+data.getPlayer(playerId).getInternational()); 


     prevButton.setOnClickListener(new OnClickListener(){ 

        @Override 
        public void onClick(View v) { 
         // TODO Auto-generated method stub 

         int newId = playerId-1; 
         dobText.setText("Birthdate:"+String.valueOf(data.getPlayer(newId).getDob())); 
          pobText.setText("Birthplace:"+String.valueOf(data.getPlayer(newId).getPob())); 
          internationalText.setText("International:"+data.getPlayer(newId).getInternational()); 

        } 

       }); 

       nextButton.setOnClickListener(new OnClickListener(){ 

        @Override 
        public void onClick(View v) { 
         // TODO Auto-generated method stub 

         int newId = playerId+1; 
         dobText.setText("Birthdate:"+String.valueOf(data.getPlayer(newId).getDob())); 
          pobText.setText("Birthplace:"+String.valueOf(data.getPlayer(newId).getPob())); 
          internationalText.setText("International:"+data.getPlayer(newId).getInternational()); 

        } 

       });} 





@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_info, menu); 
    return true; 
} 

} 
+0

你是不是節省playerId變量newid的狀態。使用playerId ++作爲nextButton和playerId--作爲prevButton並刪除newId變量。並將playerId聲明爲Activity的一個屬性,而不是最終的。 – vgarzom

回答

0

你不更新playerID。

您剛獲得一個新ID。

你應該把

int newId = playerId+1; 
playerID = newId; //insert this line 

,這樣當你再次點擊,

playerID得到更新。

+0

你不能這樣做playerId = newId;因爲playerId被聲明爲final。 – vgarzom

+0

他可以輕鬆聲明另一個全局變量 –

0

你總是隻給玩家ID加1,現在會指向下一個項目。但只要您重新點擊該按鈕,它將具有通過意圖傳遞的相同玩家ID。所以它又會增加相同的價值。創建一個新的變量,它將存儲當前可見的播放器ID並繼續增加它,然後您將能夠瀏覽下一個,反之亦然。

你不能增加播放器ID,因爲它已被聲明爲final,所以你可以創建一個全局變量或者將一個變量放在intent中,然後通過點擊按鈕增加它。

nextButton.setOnClickListener(new OnClickListener(){ 
        @Override 
        public void onClick(View v) 
{ 
         // TODO Auto-generated method stub 
    //make newId global then it will work. And keep on updating it when the button is clicked accordingly. 

         newId = playerId+1; 

         dobText.setText("Birthdate:"+String.valueOf(data.getPlayer(newId).getDob())); 
          pobText.setText("Birthplace:"+String.valueOf(data.getPlayer(newId).getPob())); 
          internationalText.setText("International:"+data.getPlayer(newId).getInternational()); 

        } 

       });} 
0

試試這個上InfoActivity,

private int playerId; 
... 
...onCreate(...){ 
    ... 
    playerId = intent.getExtras().getInt("playerId"); 
    prevButton.setOnClickListener(new OnClickListener(){ 
      @Override 
      public void onClick(View v) { 
      ... 
      playerId--; 
      dobText.setText("Birthdate:"+String.valueOf(data.getPlayer(playerId).getDob())); 
      pobText.setText("Birthplace:"+String.valueOf(data.getPlayer(playerId).getPob())); 
      internationalText.setText("International:"+data.getPlayer(playerId).getInternational()); 
      } 
    } 
    nextButton.setOnClickListener(new OnClickListener(){ 
      @Override 
      public void onClick(View v) { 
      ... 
      playerId++; 
      dobText.setText("Birthdate:"+String.valueOf(data.getPlayer(playerId).getDob())); 
      pobText.setText("Birthplace:"+String.valueOf(data.getPlayer(playerId).getPob())); 
      internationalText.setText("International:"+data.getPlayer(playerId).getInternational()); 
      } 
    } 
} 
相關問題