Android. Select the GridView item programmatically?

I want to click on an element after the method setAdapter()

.

Consider if you have declared and initialized a button in Activity globally, then you can click on it programmatically from any scope and the listener will work.I want something like this to be able to click on any element of my GridView .

So far I have tried all the below methods one by one, but none of them seem to work, I have tried different questions on glass but none of the answers worked for me.      iconsGrid.setSelection(2);

    iconsGrid.setSelected(true);

    iconsGrid.performClick();

    iconsGrid.performItemClick(iconsGrid, 2, 2);

    iconsGrid.performItemClick(iconsGrid, 2, iconsGrid.getItemIdAtPosition(2));

,

//Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mTextView = (TextView) findViewById(R.id.txt);
    Integer[] resource_icons = { 
            R.drawable.ic_attachment,
            R.drawable.ic_attachment,
            R.drawable.ic_attachment,
            R.drawable.ic_attachment,
            R.drawable.ic_attachment,
            R.drawable.ic_attachment };

    GridView iconsGrid = (GridView) findViewById(R.id.gv_icons);
    IconGridAdapter iconAdapter = new IconGridAdapter(this, resource_icons);
    iconsGrid.setAdapter(iconAdapter);
   /*
    * I want to perform a click here
    */
}

//Adapter
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater li;
    View grid;
    if (convertView == null) {
        grid = new View(mContext);
        li = ((Activity) mContext).getLayoutInflater();
        grid = li.inflate(R.layout.grid_cell_imageview, parent, false);
    } else {
        grid = (View) convertView;
    }

    ImageView imageView = (ImageView) grid.findViewById(R.id.image);
    imageView.setImageResource(imageId[position]);

    return grid;
}

      

+3


source to share


2 answers


Ok let's do it

declare one field in your adapter.

private int selectedPosition=-1;

      

now create a setter for this

private void setSelectedPosition(int position)
{
selectedPosition=position;
}

      



Now in your getView method

if(position==selectedPosition)
    {
    grid.setSelected(true);

    //OR

    grid.setBackgroundColor(<Some Color>);
    }

      

Now after installing the adapter

adapter.setSelectedPosition(<your desired selected item position>);

adapter.notifyDataSetChanged();

      

+6


source


In the xml file inside the GridView, just add android:listSelector="@drawable/your_selector"

after adding this line, if you are using code -

gridView.setSelection(POSITION); //position starts from 0

      

It will highlight that particular item.



and for using clicks -

gridView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
                 //do whatever you want to do
        }
});

      

+3


source







All Articles