2015-10-20 79 views
1

我有一個ListView創建一個ArrayAdapter,它使用JSON解析從MySQL數據庫獲取不同的值。現在,我通過一些值到下一個活動,當用戶點擊了列表中的項目:android listview從一個Activity傳遞隱藏值到另一個

@Override 
public void onItemClick(AdapterView<?> a, View v, int position, long id) 
{ 
    Intent intent = new Intent(ListActivity.this, ListingDescription.class); 

    String place_name = ((TextView) v.findViewById(R.id.textView3)).getText().toString(); 

    intent.putExtra("place_name",place_name); 
    startActivity(intent); 

這是工作正常,但現在我想從MySQL數據庫2個值這不應該顯示在ListView中。我應該走哪條路? 我試着在ArrayAdapter中添加值,但後來我意識到我通過獲取textview信息來傳遞值。我如何傳遞ArrayList適配器中的某些信息而不顯示在ListView中? 也許有不同的方式來做到這一點?

這是我如何解析JSON:

for (int i=0; i<theJson.length(); i++){ 
    Places place = new Places(); 
    JSONObject jRealObject = theJson.getJSONObject(i); 

    place.setImage(jRealObject.getString("image")); 
    place.setName(jRealObject.getString("name")); 
    place.setLocation_address(jRealObject.getString("location_address")); 
    place.setOpen_until(jRealObject.getString("open_until")); 

    placeslist.add(place); 

我也想過只把值在佈局看不見,但我認爲這絕對不是要走的路。我會感謝任何幫助!

回答

0

創建地方getter方法,你有setter方法了。

List placeslist = new ArrayList <>();

將placeslist添加到您的適配器。

OnItemClick。

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    String image = adapter.getItem(position).getImage(); 
    String name= adapter.getItem(position).getName(); 
//use these in intents 
} 

編輯

final CustomAdapter adapter = new CustomAdapter(this, R.layout.activity_list_view, placeslist); 
     ListView listView = (ListView) findViewById(R.id.radioGroup); 
     listView.setAdapter(adapter); 
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       String image = adapter.getItem(position).getImage(); 
       String name= adapter.getItem(position).getName(); 
      } 
     }); 
    } 
+0

在這一段代碼,你把adapter.getItem(位置),你的意思parent.getItem之前數據傳遞到你的意圖是什麼?如果我將這兩個值傳遞給適配器,即使它們不會顯示在列表視圖中,我可以使用getItem檢索它們?此外,位置是指適配器在列表視圖中的位置還是數組在內部的位置? – manhols

+0

適配器是將您的活動中的項目傳遞到CustomAdapter類的自定義適配器變量。 – Dhina

+0

位置是點擊的項目位置(通過onItemCLick) – Dhina

0

您可以通過intent傳遞位置對象。

intent.putExtra("some_name",adapter.getItem(position).get(position).toString()); 

在另一個Activity

JSONObject obj = new JSONObject(getIntent().getStringExtra("some_name")); 
0

你可以做它的使用setTag(Object o)getTag()方法最簡單的方法。

程序

  1. 當您實現內部適配器getView()方法設置對象的視圖。

  2. 然後OnItemClicked調用getTag()並手動將其轉換爲您爲數據定義的類。

  3. 調用startActivity(Intent i)

相關問題