2015-11-11 144 views
1

我正在開發應用程序,其中我想在列表視圖中顯示一些引號和語錄,並且還希望在用戶單擊列表項目時在新佈局文件中顯示每個引號。這對我的主要活動代碼簡單列表視圖: -如何在新佈局中顯示Android ListView項目點擊

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

/** 
* Created by Tauseef on 11/11/2015. 
*/ 
public class MainActivity extends AppCompatActivity { 

    private String[] loveArray = { 
      "Jo Pyar Hamesha Sath Rahe Wo Sacha Hai Ji,\n" + 
      "Jo Musibaton Mein Kaam Aaye Wo Acha Hai Ji,\n" + 
      "Kabhi Kabhi Humse Bhi Ho Jati Hai Nadaniya,\n" + 
      "Kyonki Dil To Baccha Hai Ji.", "Chor to sakta hu,\n" + 
      "Magar Chor nahipate use,\n" + 
      "Wo shaks meri bigri huyi,\n" + 
      "Aadat ki trha hai.", 

      "Ek shaam aati hai tumhari yaad lekar,\n" + 
      "Ek shaam jaati hai tumhari yaad dekar,\n" + 
      "Par hume intezaar hai us shaam ka,\n" + 
      "Jo aaye sirf tumhe saath lekar" 
}; 

    private ListView loveListView; 
    private ArrayAdapter arrayAdapter; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_love); 

     Intent intent = getIntent(); 

     loveListView = (ListView) findViewById(R.id.loveList); 

     // this-The current activity context. 
     // Second param is the resource Id for list layout row item 
     // Third param is input array 
     arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, loveArray); 
     loveListView.setAdapter(arrayAdapter); 

     loveListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) {      

       Intent newIntent = new Intent(LoveActivity.this, MainContent.class); 
       newIntent.putExtra("loveArray", position); 
       startActivity(newIntent); 
      } 
     }); 
    } 
} 

這裏是僅具有TextView的中,我要顯示的點擊列表項的TextView的新活動: -

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.TextView; 

/** 
* Created by Tauseef on 11/11/2015. 
*/ 
public class MainContent extends AppCompatActivity { 

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

     TextView textView =(TextView)findViewById(R.id.mainContentTextView); 
     Intent intent = getIntent(); 
     String data = ""; 
     if(intent!= null){ 
      Bundle extras = intent.getExtras(); 
      if(extras != null){ 
       data = extras.getString("loveArray"); 
      } 
     } 
      } 
} 

每當我運行這個應用程序,並點擊列表項目顯示空指針excetion和一些別的東西。我沒有得到這個代碼實際發生的錯誤。

+0

嘗試創建接受的類空數組,並把從意向進來它的內容。我也發現類的命名似乎是一個問題.... Intent newIntent = new Intent(LoveActivity.this,MainContent.class);不應該是MainActivity.this,MainContent.Class ... – Owner

+0

我已經嘗試過,但沒有工作 – Tauseef

+0

如果你在意圖中給予的立場。在接收器類中,它只會獲得被點擊的Item的索引值。您需要傳遞ListView中的字符串。 – Owner

回答

1
Bundle extras = intent.getExtras(); 
      if(extras != null){ 
       data = extras.getInt("loveArray"); 
      } 

而且使用getInt("loveArray")代替getString()

Bçoz傳遞位置即詮釋

Intent newIntent = new Intent(LoveActivity.this, MainContent.class); 
newIntent.putExtra("loveArray", position);//Int not string 

編輯:使用,如果你通過了報價信息,而不是位置的下方。

Intent newIntent = new Intent(LoveActivity.this, MainContent.class); 
newIntent.putExtra("loveArray", loveArray [position]);// Pass the quote as string 

然後

data = extras.getString("loveArray");將工作

+0

我遵循這種方法,但仍然無法正常工作,顯示空指針異常 – Tauseef

+0

嘿,現在它的工作,但沒有文字顯示在新的佈局。你能幫助解決這個問題 – Tauseef

1

的問題是從你的MainActivity活動要傳遞一個整數(位置)值和從搜索Maincontent活動您收到一個字符串值。你需要寫的

data = extras.getString("loveArray"); 
1

你loveArray

data = extras.getInt("loveArray"); 

墨水瓶應該有一個以上的項目。所以,當你通過點擊列表視圖中應採取的立場陣列開始活動,以便改變

newIntent.putExtra("loveArray", position); 

newIntent.putExtra("loveArray", loveArray[position]); 

所以它需要的位置perticular陣列的數據

1

按照以下步驟

而不是隻通過位置,只是通過做字符串

Intent intent = new Intent(LoveActivity.this, MainContent.class); 
intent.putExtra("loveArray", loveArray[position]);// this will pass the string of this position` 
在搜索Maincontent活動

然後,做

data= extras.getString("loveArray"); 必須work`

+0

仍然無法正常工作 – Tauseef

相關問題