2015-05-14 5 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 (к) .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

добавьте вышеперечисленный кликмейкер текстового поля с помощью 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. использовать массив list user define метод getGridItems() для получения массива Список gridItems.On, который затем вызывает метод .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(); 


     } 
    }); 
Смежные вопросы