无法在android-swipelistview中实现OnItemClickListener

vod*_*ng2 3 android listview swipe

我在https://github.com/47deg/android-swipelistview中使用android-swipelistview 但我无法实现OnItemClickListener.我写的时候没有运行:

swipeListView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
            startActivity(new Intent(getActivity().getApplicationContext(),ComposeActivity.class));
        }
    });
Run Code Online (Sandbox Code Playgroud)

Bey*_*yka 16

试试这个:

swipeListView.setSwipeListViewListener(new BaseSwipeListViewListener() {
    @Override
    public void onClickFrontView(int position) {
         super.onClickFrontView(position);
         your code...
    }
}
Run Code Online (Sandbox Code Playgroud)


shf*_*hrf 5

SwipeListView有两个视图作为FrontView和BackView.It应该在xml中设计如下

package_raw.xml:

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

<RelativeLayout
    android:id="@+id/back"             <===
    style="@style/ListBackContent"
    android:layout_width="wrap_content"
    android:layout_height="110dp"   
    android:tag="back" >

<LinearLayout
    android:id="@+id/backshowportion"
    style="@style/ListBackContent"
    android:layout_width="250dp"
    android:layout_height="110dp"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:background="@drawable/bg"
    android:gravity="right|center" >

<TextView
     ..... />

<TextView
     ..... />

<TextView 
     ...../>

</LinearLayout>

</RelativeLayout>

<RelativeLayout
    android:id="@+id/front"            <===
    style="@style/ListFrontContent"
    android:layout_width="match_parent"
    android:layout_height="110dp"
    android:orientation="vertical"
    android:tag="front" >

<TextView
     ..... />

<TextView
     ..... />

<TextView
     ..... />

<TextView
     ..... />
Run Code Online (Sandbox Code Playgroud)

然后在下面的代码段中指定您需要在"FrontView"或"BackView"上完全单击的位置:

protected void onCreate(Bundle savedInstanceState) 
{
    swipeListView=(SwipeListView)findViewById(R.id.lstRequests);
    if (Build.VERSION.SDK_INT >= 11) 
    {
        swipeListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
    }
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) 
    {
        swipeListView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() 
        {
            @Override
            public void onItemCheckedStateChanged(ActionMode mode, int position,long id, boolean checked)
            {
                mode.setTitle("Selected (" + swipeListView.getCountSelected() + ")");                  
            }
            @Override
            public void onDestroyActionMode(ActionMode mode) 
            {
                swipeListView.unselectedChoiceStates();
            }
        @Override
        public boolean onActionItemClicked(ActionMode mode,MenuItem item) 
        {
            return false;
        }
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) 
        {
            return false;
        }
        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu)
        {
            return false;
        }
    });
}
}
public void onStart()
{
    super.onStart();        
    listner(); 
}
private void listner()
{
 swipeListView.setSwipeListViewListener(new BaseSwipeListViewListener() 
 {          
        @Override
        public void onStartOpen(int position, int action, boolean right)
        {
             Log.d("swipe", String.format("onStartOpen %d - action %d", position, action));
        }

        @Override
        public void onStartClose(int position, boolean right)
        {
            Log.d("swipe", String.format("onStartClose %d", position));                 
        }   

        @Override
        public void onOpened(int position, boolean toRight)
        {   

        }   

        @Override
        public void onMove(int position, float x)
        {

        }   

        @Override
        public void onListChanged()
        {

        }

        @Override
        public void onLastListItem()
        {   

        }   

        @Override
        public void onFirstListItem()
        {   

        }   

        @Override
        public void onDismiss(int[] reverseSortedPositions) 
        {

        }

        @Override           
        public void onClosed(int position, boolean fromRight) 
        {   

        }   

        @Override
        public void onClickFrontView(int position)        //<===================FrontView
        {
            Log.d("swipe", String.format("onClickFrontView %d", position));
            swipeListView.openAnimate(position);
        }   

        @Override
        public void onClickBackView(int position)         //<===================BackView
        {
            Log.d("swipe", String.format("onClickBackView %d", position));
            swipeListView.closeAnimate(position);
        }

        @Override
        public void onChoiceStarted() 
        {

        }

        @Override
        public void onChoiceEnded() 
        {   

        }   

        @Override
        public void onChoiceChanged(int arg0, boolean arg1) 
        {

        }   

        @Override
        public int onChangeSwipeMode(int arg0)
        {
            return 0;
        }
    });   
Run Code Online (Sandbox Code Playgroud)

希望我能帮助你.