2015-05-14 50 views
0

我有一个gridView,其中每个单元格包含一个ImageView和一个TextView。当用户点击一个项目时,我想将TextView的文本放在用户点击的位置。我尝试了下面的代码,但每次我拿第一个元素。获取GridView中点击的项目的文本

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

     ViewGroup gridChild = (ViewGroup) grid.getChildAt(position); 
     int childSize = gridChild.getChildCount(); 

     for(int k = 0; k < childSize; k++) { 
      if(gridChild.getChildAt(k) instanceof TextView){ 
        TextView temp = (TextView) findViewById(gridChild.getChildAt(k).getId()); 
        stationId = temp.getText().toString(); 
        Log.i("stationId", stationId); 
      } 
     } 
+0

'parent.getItemAtPosition(位置)的上午项' – Blackbelt

+0

当我使用上述予取显示java.lang.NullPointerException在此行中的TextView温度=(TextView的)findViewById(gridChild.getChildAt(相关联的属性K).getId()); – user4292106

+0

它不完全看我写的,是吗? – Blackbelt

回答

0

使用此

@Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     View rowView = convertView; 
     rowView = inflater.inflate(R.layout.gridView_item, null); 
     TextView tw1 = (TextView) rowView.findViewById(R.id.textview); 
ImageView im = (ImageView) rowView.findViewById(R.id.ImgaeView); 

     rowView.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
String getText=tw1.getText(); 

      } 

     return rowView; 
    } 
+0

我已经覆盖了getView()之前,我不能使用上面的代码。 – user4292106

+0

将上面的textview的clicklistener添加到您使用的getview()中。 – kgandroid

+0

它不起作用,它是逻辑不工作。当用户点击一个gridView项时,他不会点击TextView。 – user4292106

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

     String clickedText = yourGridView.getItemAtPosition(position).toString()); 


     } 
    }); 
0

gridItems是拿着在GridView项目的数组列表类。使用数组列表用户定义方法getGridItems()来获取gridItems.On的List数组,然后调用方法.get(position)将传递事件的位置索引作为参数传递给.get(position)以检索哪个与GridIemsList

public class GridItemsList { 
private ArrayList<GridItem> gridItems = new ArrayList<GridItem>(); 

public GridItemsList() { 

} 

public ArrayList<GridItem> getGridItems() { 
    return gridItems; 
} 

public void addToList(GridItem gridItem) { 
    this.gridItems.add(gridItem); 
} 



    //ManinActivity.java          
    private GridItemsList gridItems; 
    //dump some data to arrayList 
    gridItems = new GridItemsList(); 
    for(int i=0;i<12;i++) 
    { 
     GridItem item = new GridItem(); 
     if((i%2)==0) 
     { 
      item.setImageId(R.drawable.family); 
      item.setName("Family"); 
     } 
     else { 
      item.setImageId(R.drawable.love); 
      item.setName("Love"); 
     } 


     gridItems.addToList(item); 


    } 
    CustomGrid adapter = new 
    CustomGrid(MainActivity.this,gridItems.getGridItems()); 
    grid=(GridView)findViewById(R.id.grid); 
    grid.setAdapter(adapter);           

    /*** 
    * create a Toast 
    */           
    grid.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
     public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 
      String clickedText = gridItems.getGridItems().get(position).getName(); 
      Toast.makeText(MainActivity.this, "You Clicked at " + clickedText , Toast.LENGTH_SHORT).show(); 


     } 
    });