技术标签: android
这是很久之前学过的内容,学过之后在开发一个wifi连接功能的时候,点击对应item的WiFi进行连接,能连接成功,功能都能实现,但是遇到了前端ui方面的问题,后来没时间就没做了,listView点击item,并且置顶,这个我在博客上面之前很少看到,所以就趁着目前在做测试之余,抽个时间想了一下,怎么实现ListView点击item置顶,好了,废话不多说了,直接上代码:
首先还是布局main_activity.xml,设置一个listView的控件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/lv_list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
既然有了listView的控件了,那么接下来就是listView子项布局了,list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_item"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
布局都已经搞定,接下来就是listView的适配器了,这里我们新建一个MyListViewAdapter继承自baseAdapter,重写4个方法,并且使用内部类ViewHolder创建缓存view,加快listView中item的加载速度(个人理解,有不对的地方还请指正)
package com.example.listviewdemo_01;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.List;
/**
* author:besthyq
* date:2022/4/11
*/
public class MyListViewAdapter extends BaseAdapter {
private List<String> data;
private LayoutInflater inflater;
public MyListViewAdapter(Context context, List<String> data) {
this.data = data;
inflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int i) {
return data.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder viewHolder;
//这里用了缓存数据view,如果view为空,那么就加载布局并且找到item的view,设置标记,
// 如果不为空,那么直接获取标记
//不管是否为空,都去设置item的文字内容,并且返回
if (view == null){
viewHolder = new ViewHolder();
//加载布局
view = inflater.inflate(R.layout.list_item, viewGroup, false);
//找到item的textView
viewHolder.textView = view.findViewById(R.id.tv_list);
view.setTag(viewHolder);
}else {
viewHolder = (ViewHolder) view.getTag();
}
viewHolder.textView.setText(data.get(i));
return view;
}
private class ViewHolder {
private TextView textView;
}
}
重点来了,点击item并将其置顶显示,这里在MainActivity中进行,我们点击item的时候,对List<item>进行更新,使list中的item项与第0项进行交换,然后刷新适配器就ok了
package com.example.listviewdemo_01;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
private static final String TAG = "MainActivity";
private ListView listView;//listView
private MyListViewAdapter myListViewAdapter;//适配器
private List<String> items;//item集合
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.lv_list_view);
initData();
myListViewAdapter = new MyListViewAdapter(this,items);
listView .setAdapter(myListViewAdapter);
Log.i(TAG, "onCreate: "+items);
listView.setOnItemClickListener(this);
}
/**
* 初始化listview的数据item
*/
private void initData() {
items = new ArrayList<>();
for (int i = 0; i < 20; i++) {
items.add("items:" + (i + 1));
}
}
/**
* item子项点击事件
* @param adapterView
* @param view
* @param i
* @param l
*/
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(MainActivity.this, "点击了第:"+(i+1)+"项",Toast.LENGTH_SHORT).show();
updateData(0,i);
Log.i(TAG, "onItemClick: "+items);
//刷新适配器
myListViewAdapter.notifyDataSetChanged();
}
/**
* 更新数据,使点击的item置顶
* @param init
* @param i
*/
private void updateData(int init, int i) {
Collections.swap(items,init,i);
}
}
文章浏览阅读4.2k次,点赞4次,收藏12次。a = od.交易时间.apply(lambda x: x.hour)labels = ['上午','午间','下午','夜间','夜间2']bins = [0,6,12,14,18,24]pd.cut(a, bins=bins, labels=labels, right=False)bins:区间labels:标签right:右区间是否为闭_bins=
文章浏览阅读1.3k次。参考:7206.TPA311x音频功放POP噪声分析及控制.pdf检测功放掉电时,先把shutdown拉低,关闭输出掉电检测电路在应用时需要注意调整 R1 和 R2 的数值,选择合适的掉电保护点。避免电源的纹波触发掉电保护电路导致误触发静音。电路中给出了 Active High 和 Active Low 两种逻辑供用户选择。可以根据功放所需的逻辑自行选用。..._功放掉电保护电路
文章浏览阅读539次。3.在此基础上封装业务组件selfQrGoodsPrint。1.在vue3环境中,用到插件qrcodejs2-fix。2.封装基础组件 selfQrcode。_elementplus+vue3实现二维码打印
文章浏览阅读79次。1.事件冒泡:结构上(非视觉上)嵌套关系的元素会存在冒泡功能,同一事件,自子元素冒泡向父元素点黄的黄绿红的class全都会显示。点击子元素,一级一级冒泡到父元素。代码:自底向上改变一下位置:视觉上不是嵌套的,但结构上还是嵌套的点击黄色区域:2.事件捕获:先父元素,再子元素(自顶向下)IE没有将false改成true,冒泡直接变获取//红绿黄一定是先捕获后冒泡一个对象的一个事件类型,上面绑定的一个处理函数,只能遵循一个处理模型现在在一个对象的一个事件类型,上面绑定的两.
这篇文章介绍了使用Dlib库进行人脸定位和对齐的方法。文章内容涉及到使用Python中的OpenCV和Dlib库来实现人脸定位和对齐的步骤。
文章浏览阅读1.3k次,点赞11次,收藏7次。HostName ssh.github.com # 这是最重要的部分。git bash 中vim ~/.ssh/config。修改内容如下:重点第二行:ssh.github.com。
文章浏览阅读2.4k次。ubuntu18.04安装detectron20、安装搜狗输入法0.1 安装输入法环境fcitx0.2 下载安搜狗输入法0.3 配置输入法1、安装anaconda,参考https://blog.csdn.net/Lucky_yw/article/details/893870732、安装pycharm,参考https://www.jianshu.com/p/b0bc6a45b7c7...
文章浏览阅读109次。方案二,采用柔性事务,柔性事务是指,数据库保证局部事务,全局事务实现由业务层实现(如通过调度补偿,重试补偿,人工介入等),柔性事务常见的解决方案有:TCC、利用消息队列实现事务。路由问题,需要业务层根据SQL路由到不同的数据库,路由到SLAVE节点时,还需要保证系统负载均衡。count问题,分表后,如果需要统计表记录总和,需要遍历所有的表,然后再将结果进行汇总,可以通过一张单独的汇总表来解决,但这种解决方案需要每次insert或者delete的时候就需要更新汇总表,如果有一次没有更新,就会导致数据不一致。_mysql集群主从分库分表
文章浏览阅读1.7w次,点赞14次,收藏116次。参考:http://www.jb51.net/article/53732.htm 本博客主要实现了简单win7系统下,两台电脑之间(客户机与服务器)的文件传输,主要是基于Windows网络编程中winsock来实现的,当然这个只是简单的实现,你可以根据你的需求在你的项目里面进行更改。这里主要实现的通过客户机(Client) 通过监听服务器(Server)的需求进而向服...
文章浏览阅读5.1w次,点赞19次,收藏145次。目录 一、UDP概述二、UDP数据报三、UDP校验和计算四、UDP校验和计算的C语言实现及抓包验证一、UDP概述UDP是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,UDP在IP报文的协议..._udp校验和
文章浏览阅读353次。原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!原文链接地址:『中级篇』docker之CI/CD持续集成-(终结篇)(77)今天是中级终结篇的最后一次了,想想在二个月的时间,每天的坚持学习和更新收获还是满满的,跟我一起学习的小伙伴不知道你收获到了吗?想说的这几次CI/CD介绍了gitlab,gitlab-ci,docker,所有的工具都是免费的,提供了一个方式,作..._docker ci cd
文章浏览阅读5.1k次,点赞7次,收藏34次。版本:python3pred为模型预测的label,像素0表示背景,像素1表示类别1,像素2表示类别2,以此类推。target为groundtruth,这里读入格式为PIL image,格式不一样的请自行修改这里的n_classes是目标物类别数。比如,对于只有背景和一个检测物类别的二分类问题,n_classes=1因为pythonfor循环的range(a,b),范围其实为[a,b),所..._pytorch miou