listView点击置顶操作

这是很久之前学过的内容,学过之后在开发一个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);
    }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 中,可以使用 ListView 实现一个可滚动的列表视图。要实现 ListView点击跳转,可以按照以下步骤进行: 1. 在 ListView 的适配器中,为每个列表项添加一个点击事件监听器。例如: ```java listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // 处理列表项点击事件 } }); ``` 2. 在点击事件监听器中,使用 Intent 跳转到目标 Activity。例如: ```java Intent intent = new Intent(MainActivity.this, TargetActivity.class); startActivity(intent); ``` 完整的示例代码如下所示: ```java // MainActivity.java public class MainActivity extends AppCompatActivity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = findViewById(R.id.list_view); // 模拟数据 List<String> data = new ArrayList<>(); for (int i = 1; i <= 20; i++) { data.add("Item " + i); } // 创建适配器 ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data); // 设置适配器 listView.setAdapter(adapter); // 设置点击事件监听器 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // 跳转到目标 Activity Intent intent = new Intent(MainActivity.this, TargetActivity.class); startActivity(intent); } }); } } ``` ```xml <!-- activity_main.xml --> <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" /> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值