2013-03-16 49 views
4

我正在使用帶List的onItemClickListener()。我想傳遞點擊的項目的名稱,並將任意數字傳遞給列表的下一個實例。如何才能做到這一點? 編輯:這裏是類:onItemClickListener(),如何傳遞點擊項目的數據?

public class ListViewA extends Activity{ 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     ListView lv= (ListView)findViewById(R.id.listview); 

     // create the grid item mapping 
     String[] from = new String[] {"col_1"}; 
     int[] to = new int[] {R.id.item2}; 

     // prepare the list of all records 
     List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>(); 
     for(int i = 0; i < 10; i++){ 
      HashMap<String, String> map = new HashMap<String, String>(); 
      map.put("col_1", "col_1_item_" + i); 
      fillMaps.add(map); 
      lv.setOnItemClickListener(onListClick); 
     } 

     // fill in the grid_item layout 
     SimpleAdapter adapter = new SimpleAdapter(this, fillMaps, R.layout.grid_item, from, to); 
     lv.setAdapter(adapter); 
    } 
    private AdapterView.OnItemClickListener onListClick=new AdapterView.OnItemClickListener(){ 
    public void onItemClick(AdapterView<?> parent,View view, int position, long id) 
    { 
     Intent i=new Intent(ListViewA.this,ListViewA.class); 
     startActivity(i); 
    } 

}; 
} 
+0

請提供一些代碼,以便我們可以幫助你。你使用什麼類型的適配器?您是否使用自定義適配器? – Reda 2013-03-16 08:42:08

+0

請添加更多相關答案的詳細信息。發佈一些代碼片段以獲得更好的幫助。 – Raj 2013-03-16 08:42:23

+0

請添加您的itemclick方法。 – 2013-03-16 08:45:49

回答

5

以下示例展示瞭如何通過數據onItemClick的特定位置。

ListView lv = getListView(); 

      // listening to single list item on click 
      lv.setOnItemClickListener(new OnItemClickListener() { 
       public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 

        // selected item 
       HERE YOU GOT POSITION FOR PERTICULAR ITEM 

        // Launching new Activity on selecting single List Item 
        Intent i = new Intent(getApplicationContext(), SingleListItem.class); 
        // sending data to new activity 
        i.putExtra("position", fillMaps.get(position)); 
        startActivity(i); 

       } 
      }); 

是的,你需要聲明fillMaps爲全局。

public class ListViewA extends Activity{ 

    List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>(); 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);...... 
+0

我收到此錯誤:fillMaps無法解析。我認爲這是因爲意圖是在不同的類。如何解決這個問題?謝謝。 – 2013-03-16 09:04:21

+0

@ankitrawat將您的fillMaps聲明爲全局。 – 2013-03-16 09:06:14

+0

我更新我的答案請參閱。 – 2013-03-16 09:07:23

0

在這種方法中,第三個增量是位置。所以你必須使用這個例如。您傳遞給listView的Arraylist包含listView中顯示的數據。所以使用這種代碼

@Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { 
     // TODO Auto-generated method stub 
    String data= mArrlist.get(position); 
    } 

如果您正在使用,否則字符串類型的arralist如果您使用的getter setter方法類的ArrayList中,然後使用

mArralist.get(potion).getName(); 
+0

感謝您的回答,以及如何傳遞任意數字? – 2013-03-16 08:51:26

+0

您可以使用此類通用的隨機類。 int random = mRandom.nextInt(mArrayList.size()); – 2013-03-16 09:02:44

2
Intent i=new Intent(ListViewA.this,ListViewA.class); 
i.putExtra("Key", fillMaps.get(position)); 

startActivity(i); 

您可以使用上面的代碼你的onItemClickListner。

0

你應該得到項目@paticular位置

HashMap<String, String> item = adapterview.getAdapter().getItem(position); 

檢查根據要求,從item和工藝進一步獲取數據的條件。

Intent i=new Intent(ListViewA.this,ListViewA.class); 
i.putExtra("item", item); 
startActivity(i); 
0

對於添加任意數量的可以使用隨機類的java如下
隨機mRandom =新的隨機(); int random = mRandom.nextInt(mMoveToList.size());

int類型的隨機變量每次返回隨機值。

+0

這個數字不是隨機的,它是一個計數器。 – 2013-03-16 09:28:07

0

可以使用getItem(int position)SimpleAdapter

  1. 把你SimpleAdapter變量adapter全球
  2. 在ClickListener電話adapter.getItem(position)
相關問題