如何更改GridView的item按下去的背景?

原问题来自于CSDN问答频道,更多解决方案见:http://ask.csdn.net/questions/2135

问题描述:

如何更改GridView某一个item点下去背景色的变化,系统有个默认,我想改一下,怎么改?

解决方案:

引用网上见到的一个解决方法:android Gridview 点击某个item 改变item的背景

效果图

1 首先在你的adapter里面添加

private int clickTemp = -1;
           //标识选择的Item
public void setSeclection(int position) {
clickTemp = position;
}


2 然后再getview里面这样

@Override
public View getView(int position, View convertView, ViewGroup parent) {
.....省略代码
// 点击改变选中listItem的背景色
if (clickTemp == position) {
layout.setBackgroundResource(R.drawable.check_in_gdv_bg_s);
} else {
layout.setBackgroundColor(Color.TRANSPARENT);
}}
.....省略代码
}


3 最后在gridview的单击item事件 这样做

//GridView监听事件
designOrderGridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
   //arg1是当前item的view,通过它可以获得该项中的各个组件。 
   //arg2是当前item的ID。这个id根据你在适配器中的写法可以自己定义。 
   //arg3是当前的item在listView中的相对位置! 
                      .....省略代码
                 //设置适配器
mydapter.setSeclection(arg2);
mydapter.notifyDataSetChanged();
                     .....省略代码
}
});


 

在Windows Universal Platform (UWP)中,确定拖放操作的目标GridViewItem通常涉及以下几个步骤: 1. **处理拖放事件**:首先,在GridView上启用DragAndDrop支持,并设置相应的拖放事件处理器,如`DragEnter`, `DragLeave`, `DragOver`, `Drop`等。 ```csharp GridView dragAndDropGridView = ...; dragAndDropGridView.DragEnter += DragAndDropGridView_DragEnter; dragAndDropGridView.Drop += DragAndDropGridView_Drop; ``` 2. **检查数据交换元**(DataTransferObject): 当`DragOver`事件触发,你可以从`EventArgs`获取`DataTransferObject`,查看其中是否有待放置的数据。这可能是从源控件的可视元素的数据绑定属性中获取的。 ```csharp private void DragAndDropGridView_DragOver(DragEventHandler sender, DragEventArgs e) { if (e.Data.Contains(DataFormats.StringFormat)) { // 检查拖动数据是否适合放入GridViewItem } } ``` 3. **匹配目标位置和项**:在`Drop`事件中,遍历GridView中的Items并通过比较鼠标当前位置找到合适的插入点。可以使用`ItemsPanel`来计算屏幕坐标到视图模型坐标的关系。 ```csharp private async void DragAndDropGridView_Drop(DragEventHandler sender, DragEventArgs e) { Point dropPoint = e.GetPosition(dragAndDropGridView); GridViewItem itemToInsertAt = FindDropTarget(dropPoint); await InsertItemIntoGridView(itemToInsertAt); } private GridViewItem FindDropTarget(Point dropPoint) { // 在GridView中查找合适的插入位置 // 可能需要遍历所有Items并与dropPoint进行比较 } ``` 4. **完成插入**:最后,将数据应用到找到的`GridViewItem`上并调用`Items.Add()`将其添加到正确的位置。 ```csharp private async Task InsertItemIntoGridView(GridViewItem targetItem) { string data = e.Data.GetData(DataFormats.StringFormat) as string; if (targetItem != null) { // 将data设置到GridViewItem的相关属性,如Text、Content等 targetItem.Text = data; // 如果有分页,可能需要更新分页 await TargetPage.UpdateAsync(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值