这是很久之前学过的内容,学过之后在开发一个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"><ListViewandroid: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"><TextViewandroid: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);}@Overridepublic int getCount() {return data.size();}@Overridepublic Object getItem(int i) {return data.get(i);}@Overridepublic long getItemId(int i) {return i;}@Overridepublic 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的textViewviewHolder.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;//listViewprivate MyListViewAdapter myListViewAdapter;//适配器private List<String> items;//item集合@Overrideprotected 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*/@Overridepublic 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);}
}

listView点击置顶操作相关推荐

  1. 微信小程序一键置顶操作详解:

    微信小程序一键置顶操作详解: 第一种方式:采用scroll-view滚动视图实现 第二种方式,直接用view实现 第一种方式:采用scroll-view滚动视图实现 下面是代码简介: wxml文件代码 ...

  2. RecyclerView滑动置顶点击置顶的实现

    先看效果图,有波浪纹的是我点击的~~~: 可以看出,这个 RcyclerView 我想让它滑动置顶它就会到顶部,想点击置顶也可以到顶部.那么如何实现的呢,具体看下面,因为下面内容太多.如果不想了解,可 ...

  3. C# DataGridView 置顶操作

    C#DataGridView 置顶操作 大多数情况下,dgv都是已经绑定了数据源的,所以是不可以在添加新行的 正确做法是创建一个新表datatable,让dt的数据和dgv的数据一样,然后在对dt进行 ...

  4. android listview item置顶,ListView的item置顶

    ListView的item设置置顶 1.activity public class TopListViewActivity extends Activity { private static int ...

  5. 点击置顶按钮页面置顶到指定位置

    列子: <!--顶部--><div id="top"></div> <!--置顶按钮(需要将按钮移到指定位置,这里没有加样式了)--> ...

  6. vue 点击置顶按钮,该条列表置顶到列表的最上面

    <div v-for="(item, index) in lists" :key="index" @click="active(index)&q ...

  7. 微信支持群消息置顶;博通洽购虚拟机巨头VMware;

    微信支持群消息置顶 近日,微信iOS版更新了8.0.22版本,有用户发现,在该版本中,#微信新增群消息置顶功能#.群主或管理员长按需要置顶的消息,在菜单中点击置顶操作.之后消息就会置于群聊天界面的顶部 ...

  8. android listview标题置顶,Android仿QQ左滑删除置顶ListView操作

    最近闲来无事,于是研究了一下qq的左滑删除效果,尝试着实现了一下,先上效果图: 大致思路原理: - 通过设置margin实现菜单的显示与隐藏 - 监听onTouchEvent,处理滑动事件 上代码 i ...

  9. 计算机窗口置顶,将想要的窗口一直置顶的具体操作步骤介绍

    很多时候,我们想在电脑上同时进行多步操作,想要使某一个窗口不被其它操作窗口所覆盖,该怎么操作呢?当我们同时打开多个窗口时,将想要的窗口进行置顶,使它显示在最前排,那么无论我们怎么切换界面,它都不会被覆 ...

最新文章

  1. Python常用库使用笔记
  2. 进击的Python【第一章】:Python背景初探与Python基础(一)
  3. 数据结构-----最大堆的实现
  4. 企业私有云的建立—基于Ubuntu Enterprise Cloud(3)
  5. java 方法 示例_Java ArrayDeque offerFirst()方法与示例
  6. android强制停止运行,如何在android中单击强制停止时运行服务
  7. 那年我整理的JavaEE面试题
  8. GCC 3.4.0 编译器安装 (Redhat 9.0)
  9. AI+IoT行业“飞轮效应”凸显,全球云服务能力将发挥关键作用
  10. Java工程师成神之路 | 2020正式版
  11. 期货大佬给交易者的交易箴言,值得珍藏品读!
  12. 【第一组】第八次冲刺例会纪要
  13. R语言ggpubr包的ggscatter函数可视化散点图(scatter plot)、设置add参数为loess为散点图添加局部加权回归曲线、配置conf.int参数为回归线添加置信区
  14. YOLO算法(一)——Yolo介绍 Yolov1
  15. ao史密斯定时设置_下图ao史密斯热水器的预约定时怎么用?-史密斯热水器怎么接线...
  16. 基于matlab小波变换的突变检测识别
  17. 使用腾讯云服务器搭建网站
  18. Form表单提交成功,但是后台并没有处理数据且debug无效
  19. mysql数据库1067错误解决方法
  20. 你还在烦恼如何管理大量镜头吗?VFX总监分享7个实用技巧

热门文章

  1. 安装问题:bokeh安装报错
  2. Java IO之:BufferedReader(超详细解析,使用方法说明)
  3. 利用Matlab工具箱求解线性规划
  4. 解决端口被占用问题,安装MySQL出现端口被占用
  5. Java OA集成SAP BO
  6. 下载spotify音乐_如何在Spotify上发现新音乐
  7. Linux虚拟机中安装虚拟机----套娃
  8. 小米手机怎么开空调?3步让你的手机成为空调遥控器
  9. 数据库两时间类型相减_sql中两个时间类型相减得到的值
  10. 用MATLAB实现m序列的生成(MATLAB 2021a适用)