Android使用自定义适配器拖放ListView

时间:2015-12-05 16:37:51

标签: android listview drag-and-drop onclick custom-adapter

我正在尝试使用自定义适配器创建一个ListView,并添加一个onClickListener和一个拖放功能来对列表进行排序。

我正在查看很多示例和类似的问题,但我无法使其工作,所以我认为我的问题可能是特定的,因为我使用整个布局作为列表的项目,但我我不确定。 如果我可以提供任何进一步的信息,请告诉我。

您可以找到whole project here

我的ListActivity的实现是:

package com.jimdo.welcomeghosts.cipherrsa;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class TabKeyActivity extends ListActivity {
//Defining an adapter which will handle the data of the listview
KeyAdapter adapter;
private ListView list;

//dummy data field TODO fill this shit up by using ArrayList
Key key_data[] = new Key[]
        {
                new Key(1, R.drawable.iconpair1, "This"),
                new Key(2, R.drawable.iconpair2, "This'"),
                new Key(3, R.drawable.iconpair1, "That"),
                new Key(4, R.drawable.iconpair2, "That'")
        };

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.keymanager);
    //Setting an ADD button as last item of the ListView
    list = (ListView) findViewById(android.R.id.list);
    list.addFooterView(getLayoutInflater().inflate(R.layout.footerview,null));

    //Setting adapter for adding Items to ListView
    adapter = new KeyAdapter(this, R.layout.key, key_data);
    setListAdapter(adapter);

    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                                long id) {
            String item = ((TextView)view).getText().toString();
            Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show();
        }
    });
}

这是我的Key.xml(列表中的行元素)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"><RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/checkBox"
        android:layout_toStartOf="@+id/checkBox"
        android:id="@+id/keyRow">

        <ImageView
            android:id="@+id/imgIcon"
            android:layout_width="50px"
            android:layout_height="50px"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignWithParentIfMissing="false"
            android:layout_centerVertical="true"
            android:layout_margin="5dp"
            android:longClickable="true"
            android:focusableInTouchMode="false"
            android:clickable="false"
            android:focusable="false"/>

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_margin="5dp"
            android:layout_toRightOf="@+id/imgIcon"
            android:paddingLeft="5dp">

            <TextView
                android:id="@+id/txtTitle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="Testing the shit."
                android:focusableInTouchMode="false"
                android:clickable="false"
                android:focusable="false"
                android:textSize="@dimen/abc_text_size_headline_material" />
        </FrameLayout>
    </RelativeLayout>

    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentStart="false"
        android:layout_alignParentTop="true"
        android:layout_centerVertical="true"
        android:layout_margin="5dp" />
</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

Drag-Sort Listview是您所需要的。 Have a look at the following thread.