use*_*963 4 android android-gridview
我有一个Android GridView有一个ImageView,TextView两个Button's.网格看起来很好,但我发现很难处理内部的按钮事件GridView.我是Android新手.
任何帮助,将不胜感激.
谢谢.
Sam*_*Sam 11
如果您希望按钮(以及其他任何内容)在布局中具有唯一的单击操作,则需要编写自定义适配器并覆盖getView():
public MyAdapter(Context context, List<T> objects) {
...
inflater = (LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null) {
// Inflate and initialize your layout
convertView = inflater.inflate(R.layout.grid_item, parent, false);
holder = new ViewHolder();
holder.btnOne = (Button) convertView.findViewById(R.id.btnOne);
holder.btnOne.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Do something
}
});
// etc, etc...
convertView.setTag(holder);
}
else
holder = (ViewHolder) convertView.getTag();
// Do things that change for every grid item here, like
holder.textOne.setText(getItem(position));
return convertView;
}
class ViewHolder {
Button btnOne;
TextView textOne;
}
Run Code Online (Sandbox Code Playgroud)
这个概念在多年来的Google会谈中得到了很好的解释,这里有一个.
加成
我试图在单击GridView内的按钮时在GridView列中设置TextView的文本.
您应该能够onClick()通过询问View的父级然后获取ViewHolder 来访问方法中布局中的任何View :
public void onClick(View v) {
ViewHolder holder = (ViewHolder) ((View) v.getParent()).getTag();
// Do something with holder.textOne now
}
Run Code Online (Sandbox Code Playgroud)
(这假设您的布局没有任何嵌套的ViewGroups,因此请相应调整.)
小智 0
您必须使用 onItemClickListener
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position,
long row) {
}
Run Code Online (Sandbox Code Playgroud)
位置应该告诉您有关单击的元素的信息。但我认为 gridview 在处理带有点击监听器的对象(如按钮)时存在问题。也许最好更改其他容器的 gridview 。如果您需要 gridview,您可以使用 setOnTouchListener 捕获屏幕中的位置并创建手动 onitemclicklistener。
| 归档时间: |
|
| 查看次数: |
11904 次 |
| 最近记录: |