user4292106
user4292106

Reputation: 451

Get the Text of clicked item in gridView

I have a gridView in which every cell contains an ImageView and a TextView. When the user clicks on an item, I want to take the text of TextView in position which the user clicked. I tried the code below, but every time I take the first element.

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);
            }
        }

Upvotes: 0

Views: 3672

Answers (3)

Kirk Patrick Brown
Kirk Patrick Brown

Reputation: 184

gridItems is a class holding an array list of items in the gridView. use array list user define method getGridItems() to get the array List of gridItems.On which which then call the method .get(position) passing the position index that fired the event as a parameter to .get(position) to retrieve which ever properties associated with am item of the 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();


        }
    });

Upvotes: 0

ORY
ORY

Reputation: 413

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

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


       }
   });

Upvotes: 2

Quick learner
Quick learner

Reputation: 11457

Use This

@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;
    }

Upvotes: 0

Related Questions