draggrid简单用法

这篇博客介绍了如何在Android应用中使用DragGrid库来实现拖拽排序的功能。首先,需要在Gradle中导入DragGrid的相关依赖,并添加Jitpack仓库。接着,获取必要的权限如读写外部存储和震动权限。在Activity中,通过创建ChannelBean对象并设置其可见性,然后启动ChannelActivity以展示和操作拖拽排序的频道列表。用户可以动态添加和管理显示在‘我的频道’和‘其他频道’的条目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:导入依赖到自己工程下的gradle 

compile 'com.github.andyoom:draggrid:v1.0.1'

2.在项目的build.gradle中添加
allprojects {
    repositories {
        jcenter()
//下面这句才是加上的,上面的自带 的
        maven {url "https://jitpack.io"}
    }
}

3.权限
    <!-- 在SDCard中创建与删除文件权限 -->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <!-- 往SDCard写入数据权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <!-- 震动权限 -->

    <uses-permission android:name="android.permission.VIBRATE"/>

4:在Activity下主要代码:

//按钮点击跳转到控制界面
    public void button(View view){

if (list ==null){//判断集合中是否已有数据,没有则创建
            list =new ArrayList<>();
            //第一个是显示的条目,第二个参数是否显示
            list.add(new ChannelBean("热点",true));
            list.add(new ChannelBean("军事",true));
            list.add(new ChannelBean("八卦",true));
            list.add(new ChannelBean("游戏",true));
            list.add(new ChannelBean("宠物",true));
            list.add(new ChannelBean("汽车",false));
            list.add(new ChannelBean("热卖",false));
            list.add(new ChannelBean("外卖",false));
            list.add(new ChannelBean("条目1",false));
            list.add(new ChannelBean("条目2",false));
            list.add(new ChannelBean("条目3",false));
            list.add(new ChannelBean("条目4",false));
            ChannelActivity.startChannelActivity(MainActivity.this, list);
        }else if (jsonStr!=null){//当判断保存的字符串不为空的时候,直接加载已经有了的字符串
            ChannelActivity.startChannelActivity(MainActivity.this,jsonStr);
        }
    }
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode==ChannelActivity.REQUEST_CODE&&resultCode==ChannelActivity.RESULT_CODE) {
        jsonStr = data.getStringExtra(ChannelActivity.RESULT_JSON_KEY);
    } }


上方参数中显示为true,将会在频道管理中,我的频道里。

显示为false的将会在其他频道显示



//////////////////////////////////////////////////////////////////////////

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button mDealChannel;
    private TabLayout tabLay;
    private ArrayList<ChannelBean> channels;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        mDealChannel = (Button) findViewById(R.id.dealChannel);
        tabLay = (TabLayout) findViewById(R.id.tabLay);
        mDealChannel.setOnClickListener(this);
        //准备频道数据
        channels = new ArrayList<ChannelBean>();
        channels.add(new ChannelBean("热点", true));
        channels.add(new ChannelBean("军事", true));
        channels.add(new ChannelBean("八卦", true));
        channels.add(new ChannelBean("游戏", true));
        channels.add(new ChannelBean("宠物", true));
        channels.add(new ChannelBean("汽车", true));
        channels.add(new ChannelBean("热卖", true));
        channels.add(new ChannelBean("外卖", true));
        channels.add(new ChannelBean("太阳花", true));
        channels.add(new ChannelBean("九三", false));
        channels.add(new ChannelBean("八嘎", false));
        channels.add(new ChannelBean("色昂", false));
        //设置默认频道
        for (ChannelBean bean : channels) {
            if (bean.isSelect()) {//true表示频道被选中
                tabLay.addTab(tabLay.newTab().setText(bean.getName()));
            }
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //频道管理的回调
        if (requestCode == ChannelActivity.REQUEST_CODE && resultCode == ChannelActivity.RESULT_CODE) {
            //得到频道管理的结果
            String jsonStr = data.getStringExtra(ChannelActivity.RESULT_JSON_KEY);
            Log.d("main", jsonStr);
            //解析jsonStr,遍历得到选中的频道,配置给tablayout
            Gson gson = new Gson();
            //解析得到频道处理的结果集合
            channels = gson.fromJson(jsonStr, new TypeToken<ArrayList<ChannelBean>>() {
            }.getType());
            //遍历集合得到每一个频道,通过频道的状态,把频道添加到tablayout中
            tabLay.removeAllTabs();//清空所有旧的频道
            for (ChannelBean bean : channels) {
                if (bean.isSelect()) {//true表示频道被选中
                    tabLay.addTab(tabLay.newTab().setText(bean.getName()));
                }
            }
        }
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            default:
                break;
            case R.id.dealChannel:
                //跳转到频道管理界面,进行频道管理,用的是上面准备的数据
                ChannelActivity.startChannelActivity(this, channels);
                break;
        }
    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值