android 开源项目(二)可以左右拖动删除、调换位置的的listview的 item的实现(drag-sort-listview)
本次分享的是国外大牛们关于listView的一些牛逼方法的使用,外国的大牛真是牛掰,菜鸟无限佩服...
这个工程可以左右拖动删除、调换位置的的listview的 item的实现,这个方法在iphone手机上应用还是挺广泛的,android中也有这样实现的,在android的开源项目中,那些牛逼的外国大牛们也分享了他们的开源项目,下面呢,就是小菜鸟学习在git代码上借鉴那些外国大牛的源码,由于水平有限,在git上下载下来的源码无法导入Eclipse中直接运行,那么怎么解决这个问题呢,下面是菜鸟我的解决方法,大神们可以略过,如果有那个大神可以抽出空闲时间,教教小弟怎样直接运行从Git下下载的工程,小弟感激不尽,这样呢,小弟就不用用这样笨拙的方法解决这个问题了,这个工程源码的下载地址: https://github.com/bauerca/drag-sort-listview
实现的效果如下左右拖动删除、
上下拖动调换位置
部分代码实现的如下:
package com.nyist.net; import java.util.ArrayList; import java.util.Arrays; import android.app.Activity; import android.app.ListActivity; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; public class Drag_Sort_ListViewDemoActivity extends ListActivity { //private ArrayAdapter<ActivityInfo> adapter; private MyAdapter adapter; private ArrayList<ActivityInfo> mActivities = null; private String[] mActTitles; private String[] mActDescs; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.launcher); try { PackageInfo pi = getPackageManager().getPackageInfo( "com.nyist.net", PackageManager.GET_ACTIVITIES); mActivities = new ArrayList<ActivityInfo>(Arrays.asList(pi.activities)); String ourName = getClass().getName(); for (int i = 0; i < mActivities.size(); ++i) { if (ourName.equals(mActivities.get(i).name)) { mActivities.remove(i); break; } } } catch (PackageManager.NameNotFoundException e) { // Do nothing. Adapter will be empty. } mActTitles = getResources().getStringArray(R.array.activity_titles); mActDescs = getResources().getStringArray(R.array.activity_descs); //adapter = new ArrayAdapter<ActivityInfo>(this, // R.layout.launcher_item, R.id.text, mActivities); adapter = new MyAdapter(); setListAdapter(adapter); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { Intent intent = new Intent(); intent.setClassName(this, mActivities.get(position).name); startActivity(intent); } private class MyAdapter extends ArrayAdapter<ActivityInfo> { MyAdapter() { super(Drag_Sort_ListViewDemoActivity.this, R.layout.launcher_item, R.id.activity_title, mActivities); } @Override public View getView(int position, View convertView, ViewGroup parent) { View v = super.getView(position, convertView, parent); TextView title = (TextView) v.findViewById(R.id.activity_title); TextView desc = (TextView) v.findViewById(R.id.activity_desc); title.setText(mActTitles[position]); desc.setText(mActDescs[position]); return v; } } }
想要源码的可以留个邮箱
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了