listview按item的时间排序


public class MainActivity extends Activity {  

    private ListView mListView = null;  
    private List<TestDate> mList = null;  

    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        mListView = (ListView) this.findViewById(R.id.main_listView);  
        mList = new ArrayList<TestDate>();  
        initData();  
        Collections.sort(mList, new Comparator<TestDate>() {  
            /** 
             *  
             * @param lhs 
             * @param rhs 
             * @return an integer < 0 if lhs is less than rhs, 0 if they are 
             *         equal, and > 0 if lhs is greater than rhs,比较数据大小时,这里比的是时间 
             */  
            @Override  
            public int compare(TestDate lhs, TestDate rhs) {  
                Date date1 = DateUtil.stringToDate(lhs.getDate());  
                Date date2 = DateUtil.stringToDate(rhs.getDate());  
                // 对日期字段进行升序,如果欲降序可采用after方法  
                if (date1.before(date2)) {  
                    return 1;  
                }  
                return -1;  
            }  
        });  
        mListView.setAdapter(new MyAdapter(this, mList));  
    }  

    private void initData() {  
        mList.add(new TestDate("2012-12-12 12:30", "zhangsan"));  
        mList.add(new TestDate("2012-12-12 10:20", "lisi"));  
        mList.add(new TestDate("2012-12-11 10:21", "lisi"));  
        mList.add(new TestDate("2012-12-11 10:20", "lisi"));  
        mList.add(new TestDate("2012-12-13 01:03", "wangwu"));  
        mList.add(new TestDate("2012-12-10 02:04", "zhaoliu"));  
        mList.add(new TestDate("2012-12-15 23:00", "tianqi"));  
        mList.add(new TestDate("2012-11-12 22:30", "wangwu"));  
        mList.add(new TestDate("2012-12-17 08:24", "shimei"));  
        mList.add(new TestDate("2012-11-10 11:10", "shisanmei"));  
        mList.add(new TestDate("2012-12-18 16:50", "wangan"));  
        mList.add(new TestDate("2012-12-19 18:00", "wangjiu"));  
        mList.add(new TestDate("2012-12-20 19:30", "wusi"));  
        mList.add(new TestDate("2012-12-20 19:30", "wusi"));  
    }  
}  

public class DateUtil {  

    public static Date stringToDate(String dateString) {  
        ParsePosition position = new ParsePosition(0);  
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");  
        Date dateValue = simpleDateFormat.parse(dateString, position);  
        return dateValue;  
    }  

}  

public class MyAdapter extends BaseAdapter {  

    private Context mContext;  
    private List<TestDate> mList;  

    public MyAdapter(Context context, List<TestDate> list) {  
        this.mContext = context;  
        this.mList = list;  
    }  

    @Override  
    public int getCount() {  
        return mList != null ? mList.size() : 0;  
    }  

    @Override  
    public Object getItem(int position) {  
        return mList.get(position);  
    }  

    @Override  
    public long getItemId(int position) {  
        return position;  
    }  

    @Override  
    public View getView(int position, View convertView, ViewGroup parent) {  
        ViewHolder holder = null;  
        if (convertView == null) {  
            convertView = (LinearLayout) LayoutInflater.from(mContext).inflate(  
                    R.layout.main_item, null);  
            holder = new ViewHolder();  
            holder.textView1 = (TextView) convertView  
                    .findViewById(R.id.item_textView1);  
            holder.textVeiw2 = (TextView) convertView  
                    .findViewById(R.id.item_textView2);  
            convertView.setTag(holder);  
        } else {  
            holder = (ViewHolder) convertView.getTag();  
        }  

        holder.textView1.setText(mList.get(position).getDate());  
        holder.textVeiw2.setText(mList.get(position).getName());  

        return convertView;  
    }  

    private class ViewHolder {  
        private TextView textView1;  
        private TextView textVeiw2;  
    }  

}  

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent" >  

    <ListView  
        android:id="@+id/main_listView"  
        android:layout_width="match_parent"  
        android:layout_height="match_parent"  
        android:layout_centerHorizontal="true"  
        android:layout_centerVertical="true"  
        tools:context=".MainActivity" />  

</RelativeLayout>  

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:orientation="horizontal" >  

    <TextView  
        android:id="@+id/item_textView1"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_gravity="center_vertical"  
        android:layout_margin="10dp" />  

    <TextView  
        android:id="@+id/item_textView2"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_gravity="center_vertical" />  

</LinearLayout>  

public class TestDate {  

    private String date;  
    private String name;  

    public String getDate() {  
        return date;  
    }  

    public String getName() {  
        return name;  
    }  

    public TestDate(String date, String name) {  
        this.date = date;  
        this.name = name;  
    }  

}  

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现 ListView item 的拖动排序,可以参考以下步骤: 1. 开启 ListView 的拖放功能: ```csharp listView1.AllowDrop = true; ``` 2. 在 ListViewItem 的 MouseDown 事件中,记录当前被拖动项的索引: ```csharp private int dragIndex; private void listView1_MouseDown(object sender, MouseEventArgs e) { dragIndex = listView1.FocusedItem.Index; } ``` 3. 在 ListViewItemItemDrag 事件中,开始拖动操作,使用 DoDragDrop 方法传递数据: ```csharp private void listView1_ItemDrag(object sender, ItemDragEventArgs e) { listView1.DoDragDrop(e.Item, DragDropEffects.Move); } ``` 4. 在 ListView 的 DragEnter 事件中,判断拖入的数据是否为 ListViewItem,设置拖放效果为移动: ```csharp private void listView1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(ListViewItem))) { e.Effect = DragDropEffects.Move; } else { e.Effect = DragDropEffects.None; } } ``` 5. 在 ListView 的 DragOver 事件中,更新被拖动项的位置,设置拖放效果为移动: ```csharp private void listView1_DragOver(object sender, DragEventArgs e) { Point point = listView1.PointToClient(new Point(e.X, e.Y)); ListViewItem item = listView1.GetItemAt(point.X, point.Y); if (item != null) { int dropIndex = item.Index; if (dropIndex != dragIndex) { listView1.Items.RemoveAt(dragIndex); listView1.Items.Insert(dropIndex, listView1.Items[dragIndex]); dragIndex = dropIndex; } } e.Effect = DragDropEffects.Move; } ``` 6. 在 ListView 的 DragDrop 事件中,完成拖放操作: ```csharp private void listView1_DragDrop(object sender, DragEventArgs e) { ListViewItem item = e.Data.GetData(typeof(ListViewItem)) as ListViewItem; Point point = listView1.PointToClient(new Point(e.X, e.Y)); ListViewItem dropItem = listView1.GetItemAt(point.X, point.Y); int dropIndex = dropItem != null ? dropItem.Index : listView1.Items.Count; listView1.Items.Insert(dropIndex, item); } ``` 通过以上步骤,即可实现 ListView item 的拖动排序功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值