2012-12-22 27 views
1

我怎樣才能得到一個grid-view的物品標籤的位置,並必須從另一個grid-view的物品點擊監聽功能。Android:如何獲取網格視圖項標籤的位置來自於另一個網格視圖的單擊項設置點擊監聽器函數?

gridview2.setOnItemClickListener(new OnItemClickListener() 
{ 
    public void onItemClick(AdapterView<?> parent, View v, 
          int position, long id) 
    { 
     int i=(Integer)gridview1.getChildAt(gridview1s_position).getTag();---> it is returning Null  
    } 
}); 

MY gridview1.setOnitemClicklistenergridview2.setonitemclicklistener是在同一個文件(MainActivity.java

gridview1適配器是ImageAdapter.java(這是在gridview1設置圖像)和gridview2適配器imageadapter2.java(這是設置黑色圖像,使gridview2看起來像一個有行和列的盒子,否則它顯示爲一個粗體線,因爲我們沒有在網格視圖中放置任何東西)

gridview1.setOnItemClickListener(new OnItemClickListener() 
    { 
     public void onItemClick(AdapterView<?> parent, View v,int position, long id) 
     { 
      int tag=(Integer)gridview1.getChildAt(position).getTag();//this returning the tag 
     } 
    }); 

ImageAdapter1.java

public View getView(int arg0, View arg1, ViewGroup arg2) { 
    // TODO Auto-generated method stub 


    if(arg1!=null) 
    { 
     imv=(ImageView)arg1; 
    } 
    else 
    { 
     imv=new ImageView(cont); 
     imv.setLayoutParams(new GridView.LayoutParams(40,40)); 
     imv.setScaleType(ScaleType.CENTER_CROP); 
     imv.setPadding(0,0,0,0); 

    } 
    imv.setImageResource(imageid[arg0]);//imageid aray is having drawable images 
    imv.setTag(imageid[arg0]); 
    return imv; 

} 

gridview2

gridview2.setOnItemClickListener(new OnItemClickListener() 
    { 
     ImageAdapter ia=new ImageAdapter(getApplicationContext()); 
public void onItemClick(AdapterView<?> parent, View v,int position, long id) 
     { 
       ImageView imv; 
        if(v!=null) 
      { 
       imv=(ImageView)v; 
      } 
      else 
      { 
       imv=new ImageView(getApplicationContext()); 
       imv.setLayoutParams(new GridView.LayoutParams(40,40)); 
       imv.setScaleType(ScaleType.CENTER_CROP); 
       imv.setPadding(0,0,0,0); 
       imv.setBackgroundColor(5555); 

      } 

        imv.setImageResource(ia.imageid[tt]); 
     } 
}); 

回答

0

終於我自己得到了我的問題的解決方案。感謝所有誰給了他們寶貴的建議。

我將grid-view1的一個顆粒單元的標籤保存在一個變量中,並在grid-view2中使用了該變量。

0

使用getChildAt可能是這樣的事情太麻煩了,因爲它只能用於製作引用的觀點是,鑑於與重新排序的指標有用與此匹配。我不知道你的其他GridView的位置,以進一步追求這條道路。

但無論如何,我會做這樣的事情是做兩個適配器之間的中間集合。因爲在一個適配器中包含索引集合中的所有標籤,然後您可以製作某種閱讀器get方法。至少,這樣做會讓我放心。

gridview2.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 

     int i = gridview1.getTagFromPosition(position); 

    } 
}); 

然後在gridView1適配器是這樣的:

private int[] tagCollection; 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // ..... 
    convertView.setTag(tagCollection[position]); 
    return convertView; 
} 

public int getTagFromPosition(int position) { 
    return tagCollection[position]; 
} 

我至少希望的想法遇到這樣您就可以修改它不過是對現實如何你的對象越來越修改和訪問。

相關問題