package com.ym.myapplication.adapter;
import android.content.Context;
import android.content.SharedPreferences;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.ym.myapplication.R;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
* @Author ldp
* @Date 2023/7/24 17:11
* @Description:
*/
public class RecyclerGridAdapter extends RecyclerView.Adapter<ItemViewHolder> implements ItemTouchHelperAdapter {
private ArrayList<String> localDataSet;
private SharedPreferences sp;
private SharedPreferences.Editor spEditor;
final static String SAVE_KEY = "star_sort";
final static String USER_PREFERENCE = "user_preference";
private Context context;
private int fixedPosition = 4; // 固定的item3的位置
public List<String> getDataList() {
return localDataSet;
}
public SharedPreferences.Editor getSpEditor() {
return spEditor;
}
public int getFixedPosition() {
return fixedPosition;
}
public RecyclerGridAdapter(ArrayList<String> dataSet, Context context) {
String defaultStr = dataSet.toString();
if (context != null) {
this.context = context;
sp = context.getSharedPreferences(USER_PREFERENCE, Context.MODE_PRIVATE);
spEditor = sp.edit();
String saveString = sp.getString(SAVE_KEY, defaultStr);
//考虑,若要更改数据源,需要怎么实现 todo
String[] splitStr = saveString.replace("[", "").replace("]", "").replace(" ", "").split(",");
localDataSet = new ArrayList();
localDataSet.addAll(Arrays.asList(splitStr));
}
}
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_fixed, parent, false);
return new ItemViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
final ItemViewHolder mHolder = holder;
final int mPosition = position;
holder.getTvName().setText(localDataSet.get(position));
holder.getClContent().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context, "点击了:"+localDataSet.get(mPosition), Toast.LENGTH_SHORT).show();
}
});
if (position == fixedPosition) {
holder.getClContent().setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
Toast.makeText(context, "点击了", Toast.LENGTH_SHORT).show();
return false;
}
});
}
}
@Override
public int getItemCount() {
return localDataSet.size();
}
@Override
public void onItemMove(int fromPosition, int toPosition) {
// 处理固定的item不移动
if (toPosition == fixedPosition) {
return;
}
//显示item位置部分,还要对list设置数据顺序 保存下来需要写下
if (fromPosition < fixedPosition) {
notifyItemMoved(fromPosition, toPosition);
if (toPosition > fixedPosition) {
notifyItemMoved(fixedPosition - 1, fixedPosition);
}
} else if (fromPosition > fixedPosition) {
notifyItemMoved(fromPosition, toPosition);
if (toPosition < fixedPosition) {
notifyItemMoved(fixedPosition, fixedPosition+1 );
}
}
// spEditor.putString(SAVE_KEY, localDataSet.toString());
// spEditor.apply();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Android Recycleview 固定item并且可拖拽
共138个文件
xml:79个
bin:10个
png:10个
需积分: 0 1 下载量 129 浏览量
2023-08-04
08:36:11
上传
评论
收藏 724KB ZIP 举报
温馨提示
Android实现RecycleView固定其中一个item,其他item可拖拽,并且保存数据位置再次点开APP可回显功能
资源推荐
资源详情
资源评论
收起资源包目录
Android Recycleview 固定item并且可拖拽 (138个子文件)
gradlew.bat 2KB
executionHistory.bin 1.11MB
classAnalysis.bin 1.05MB
jarAnalysis.bin 265KB
outputFiles.bin 91KB
fileHashes.bin 74KB
taskHistory.bin 32KB
sha1-checksums.bin 30KB
md5-checksums.bin 20KB
resourceHashesCache.bin 19KB
last-build.bin 1B
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.gitignore 208B
.gitignore 47B
.gitignore 7B
build.gradle 1KB
build.gradle 661B
settings.gradle 49B
gradlew 5KB
My_Application.app.iml 18KB
My_Application.iml 1KB
gradle-wrapper.jar 53KB
RecyclerGridAdapter.java 4KB
SimpleItemTouchHelperCallback.java 4KB
MainActivity.java 2KB
ItemViewHolder.java 1KB
ItemTouchHelperViewHolder.java 230B
ItemTouchHelperAdapter.java 205B
ExampleInstrumentedTest.kt 668B
ExampleUnitTest.kt 345B
buildOutputCleanup.lock 17B
javaCompile.lock 17B
executionHistory.lock 17B
fileContent.lock 17B
checksums.lock 17B
fileHashes.lock 17B
.name 14B
ic_launcher_round.png 15KB
ic_launcher_round.png 10KB
ic_launcher.png 9KB
ic_launcher_round.png 7KB
ic_launcher.png 6KB
ic_launcher_round.png 5KB
ic_launcher.png 4KB
ic_launcher.png 3KB
ic_launcher_round.png 3KB
ic_launcher.png 2KB
proguard-rules.pro 751B
gradle.properties 1KB
local.properties 439B
gradle-wrapper.properties 230B
cache.properties 49B
gc.properties 0B
gc.properties 0B
build_file_checksums.ser 539B
workspace.xml 15KB
ic_launcher_background.xml 5KB
Project.xml 3KB
ic_launcher_foreground.xml 2KB
Gradle__androidx_test_espresso_espresso_idling_resource_3_1_1_aar.xml 1KB
Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml 1KB
Gradle__androidx_test_espresso_espresso_core_3_1_1_aar.xml 1KB
Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml 1KB
Gradle__androidx_test_ext_junit_1_1_0_aar.xml 1KB
Gradle__androidx_fragment_fragment_1_0_0_aar.xml 1KB
Gradle__androidx_test_monitor_1_1_1_aar.xml 1KB
Gradle__androidx_test_runner_1_1_1_aar.xml 1KB
Gradle__androidx_print_print_1_0_0_aar.xml 1KB
Gradle__androidx_coordinatorlayout_coordinatorlayout_1_0_0_aar.xml 1KB
jarRepositories.xml 1KB
Gradle__androidx_vectordrawable_vectordrawable_animated_1_0_0_aar.xml 1KB
Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml 1KB
Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml 1KB
Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml 1KB
Gradle__androidx_versionedparcelable_versionedparcelable_1_0_0_aar.xml 1021B
Gradle__androidx_asynclayoutinflater_asynclayoutinflater_1_0_0_aar.xml 1021B
Gradle__androidx_legacy_legacy_support_core_ui_1_0_0_aar.xml 1016B
Gradle__androidx_lifecycle_lifecycle_process_2_0_0_aar.xml 1014B
Gradle__androidx_lifecycle_lifecycle_service_2_0_0_aar.xml 1014B
Gradle__androidx_recyclerview_recyclerview_1_0_0_aar.xml 1008B
Gradle__androidx_lifecycle_lifecycle_extensions_2_0_0_aar.xml 1008B
Gradle__androidx_slidingpanelayout_slidingpanelayout_1_0_0_aar.xml 1003B
Gradle__androidx_lifecycle_lifecycle_viewmodel_2_0_0_aar.xml 1001B
Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml 994B
Gradle__androidx_transition_transition_1_0_0_aar.xml 989B
Gradle__androidx_lifecycle_lifecycle_runtime_2_0_0_aar.xml 987B
Gradle__androidx_appcompat_appcompat_1_0_2_aar.xml 981B
Gradle__androidx_vectordrawable_vectordrawable_1_0_1_aar.xml 976B
Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml 967B
Gradle__androidx_test_core_1_1_0_aar.xml 965B
Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml 958B
Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml 958B
Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml 952B
Gradle__androidx_core_core_ktx_1_0_2_aar.xml 941B
Gradle__androidx_customview_customview_1_0_0_aar.xml 940B
misc.xml 937B
共 138 条
- 1
- 2
资源评论
l冷暖
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功