Android- Select GridView 的项目以编程方式?
Android- Select an item of a GridView programmatically?
我想在 setAdapter()
方法之后对项目执行点击。
考虑一下,如果您已经在 Activity 中全局声明并初始化了一个 Button,那么您可以点击它从 activity 的任何范围以编程方式,侦听器将工作。我想要类似的东西,以便能够对我的 GridView.
的任何项目执行单击
到目前为止,我已经一一尝试了以下所有方法,但其中 none 似乎有效,我尝试了不同的堆栈问题,但甚至没有一个答案对我有用。
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;
}
好的,我们开始吧
在您的适配器中声明一个字段 say
private int selectedPosition=-1;
现在为此创建一个setter
private void setSelectedPosition(int position)
{
selectedPosition=position;
}
现在在你的 getView 方法中
if(position==selectedPosition)
{
grid.setSelected(true);
//OR
grid.setBackgroundColor(<Some Color>);
}
现在设置适配器后
adapter.setSelectedPosition(<your desired selected item position>);
adapter.notifyDataSetChanged();
在 GridView 的 xml 文件中添加 android:listSelector="@drawable/your_selector"
添加此行后,如果您的代码类似于 -
gridView.setSelection(POSITION); //position starts from 0
它将突出显示该特定项目。
并用于执行点击 -
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
//do whatever you want to do
}
});
我想在 setAdapter()
方法之后对项目执行点击。
考虑一下,如果您已经在 Activity 中全局声明并初始化了一个 Button,那么您可以点击它从 activity 的任何范围以编程方式,侦听器将工作。我想要类似的东西,以便能够对我的 GridView.
的任何项目执行单击到目前为止,我已经一一尝试了以下所有方法,但其中 none 似乎有效,我尝试了不同的堆栈问题,但甚至没有一个答案对我有用。
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;
}
好的,我们开始吧
在您的适配器中声明一个字段 say
private int selectedPosition=-1;
现在为此创建一个setter
private void setSelectedPosition(int position)
{
selectedPosition=position;
}
现在在你的 getView 方法中
if(position==selectedPosition)
{
grid.setSelected(true);
//OR
grid.setBackgroundColor(<Some Color>);
}
现在设置适配器后
adapter.setSelectedPosition(<your desired selected item position>);
adapter.notifyDataSetChanged();
在 GridView 的 xml 文件中添加 android:listSelector="@drawable/your_selector"
添加此行后,如果您的代码类似于 -
gridView.setSelection(POSITION); //position starts from 0
它将突出显示该特定项目。
并用于执行点击 -
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
//do whatever you want to do
}
});