2014-12-05 58 views
0

大家好我是android编程的新手。我想创建一个益智游戏,其中用户将通过在屏幕上拖动未排序的标签进行排序。我正在使用listview控件来存储未排序的html标记。我已实现了以下库: https://github.com/terlici/DragNDropList如何获得listview控件的索引或位置

现在我试图获取列表项的位置或索引用户后删除列表项,所以我可以比较用户排序列表项目的实际排序的项。

这里是我的代码Main.java

PuzzleManager pm = new PuzzleManager(this); 
pm.insertPuzzle("<html>,</h1>,<h1>,</html>,<body>,</body>", "<html>,<body>,<h1>,</h1>,</body>,</html>"); 
Cursor cursor = pm.getPuzzle(1); 
pm.close(); 
String s = cursor.getString(1); 
List<String> puzzleList = Arrays.asList(s.split(",")); 
ArrayList<Map<String, Object>> items = new ArrayList<Map<String, Object>>(); 

for(int i = 0; i < puzzleList.size(); ++i) { 
    HashMap<String, Object> item = new HashMap<String, Object>(); 
    item.put("puzzle", puzzleList.get(i)); 
    items.add(item); 
} 

DragNDropListView list = (DragNDropListView)findViewById(android.R.id.list); 
DragNDropSimpleAdapter adaptor = new DragNDropSimpleAdapter(this, 
     items, 
     R.layout.row, 
     new String[]{"puzzle"}, 
     new int[]{R.id.text}, 
     R.id.handler); 
list.setDragNDropAdapter(adaptor); 

main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<com.terlici.dragndroplist.DragNDropListView 
    android:id="@id/android:list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    /> 

</LinearLayout> 

row.xml提前

<?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="80px" 
    android:orientation="horizontal" 
    android:gravity="center_vertical" 
    > 

    <ImageView 
     android:id="@+id/handler" 
     android:layout_width="60px" 
     android:layout_height="60px" 
     android:src="@android:drawable/btn_star_big_on" 
     android:layout_marginLeft="8px" 
     /> 

    <TextView 
     android:id="@+id/text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Large Text" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

</LinearLayout> 

感谢

+1

“DragNDropListView提供了一个用于拖放的事件侦听器”:* list.setOnItemDragNDropListener(...)*。使用它来获取丢弃项目的索引(** id **) – Rami 2014-12-05 19:25:01

回答

0
list.setOnItemDragNDropListener(new DragNDropListener(){ 
       public void onItemDrop(DragNDropListView parent, View view, int startPosition, int endPosition, long id) 
       { 
        super.onItemDrop(parent, view, startPosition, endPosition, id); 
        Log.i("long clicked","pos"+" "+endPosition+" id "+id); 
       } 

     });