Skip to content

Commit 2b2e59b

Browse files
Added a test to show that @ItemClick doesn't work with ListFragment
1 parent cb6eeaa commit 2b2e59b

4 files changed

Lines changed: 145 additions & 0 deletions

File tree

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.xtremelabs.robolectric.shadows;
2+
3+
import android.os.Bundle;
4+
import android.support.v4.app.ListFragment;
5+
import android.view.View;
6+
import android.widget.AdapterView;
7+
import android.widget.ListView;
8+
9+
import com.xtremelabs.robolectric.internal.Implementation;
10+
import com.xtremelabs.robolectric.internal.Implements;
11+
12+
@Implements(ListFragment.class)
13+
public class ShadowListFragment extends ShadowFragment {
14+
15+
final private AdapterView.OnItemClickListener mOnClickListener = //
16+
new AdapterView.OnItemClickListener() {
17+
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
18+
onListItemClick((ListView) parent, v, position, id);
19+
}
20+
};
21+
22+
@Implementation
23+
public void onViewCreated(View view, Bundle savedInstanceState) {
24+
ListView list = (ListView) view.findViewById(android.R.id.list);
25+
list.setOnItemClickListener(mOnClickListener);
26+
}
27+
28+
@Implementation
29+
public void onListItemClick(ListView l, View v, int position, long id) {
30+
}
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package org.androidannotations.test15.efragment;
2+
3+
import static org.fest.assertions.Assertions.assertThat;
4+
5+
import org.androidannotations.test15.AndroidAnnotationsTestRunner;
6+
import org.junit.Before;
7+
import org.junit.Test;
8+
import org.junit.runner.RunWith;
9+
10+
import android.support.v4.app.Fragment;
11+
import android.support.v4.app.FragmentActivity;
12+
import android.support.v4.app.FragmentManager;
13+
import android.support.v4.app.FragmentTransaction;
14+
import android.view.View;
15+
import android.widget.ListView;
16+
17+
import com.xtremelabs.robolectric.Robolectric;
18+
import com.xtremelabs.robolectric.shadows.ShadowListFragment;
19+
20+
@RunWith(AndroidAnnotationsTestRunner.class)
21+
public class MyListFragmentTest {
22+
23+
private static final int TESTED_CLICKED_INDEX = 4;
24+
25+
MyListFragment_ myListFragment;
26+
27+
@Before
28+
public void setup() {
29+
Robolectric.bindShadowClass(ShadowListFragment.class);
30+
31+
myListFragment = new MyListFragment_();
32+
startFragment(myListFragment);
33+
}
34+
35+
@Test
36+
public void is_item_click_available_from_list_fragment() {
37+
ListView listView = (ListView) myListFragment.findViewById(android.R.id.list);
38+
long itemId = listView.getAdapter().getItemId(TESTED_CLICKED_INDEX);
39+
View view = listView.getChildAt(TESTED_CLICKED_INDEX);
40+
41+
assertThat(myListFragment.listItemClicked).isFalse();
42+
listView.performItemClick(view, TESTED_CLICKED_INDEX, itemId);
43+
assertThat(myListFragment.listItemClicked).isTrue();
44+
}
45+
46+
public static void startFragment(Fragment fragment) {
47+
FragmentManager fragmentManager = new FragmentActivity().getSupportFragmentManager();
48+
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
49+
fragmentTransaction.add(fragment, null);
50+
fragmentTransaction.commit();
51+
}
52+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:layout_width="match_parent"
4+
android:layout_height="match_parent"
5+
android:orientation="vertical"
6+
android:paddingLeft="8dp"
7+
android:paddingRight="8dp" >
8+
9+
<ListView
10+
android:id="@android:id/list"
11+
android:layout_width="match_parent"
12+
android:layout_height="match_parent"
13+
android:layout_weight="1"
14+
android:background="#00FF00"
15+
android:drawSelectorOnTop="false" />
16+
17+
<TextView
18+
android:id="@android:id/empty"
19+
android:layout_width="match_parent"
20+
android:layout_height="match_parent"
21+
android:background="#FF0000"
22+
android:text="No data" />
23+
24+
</LinearLayout>
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package org.androidannotations.test15.efragment;
2+
3+
import org.androidannotations.annotations.EFragment;
4+
import org.androidannotations.annotations.ItemClick;
5+
import org.androidannotations.annotations.ViewById;
6+
import org.androidannotations.test15.R;
7+
8+
import android.os.Bundle;
9+
import android.support.v4.app.ListFragment;
10+
import android.widget.ArrayAdapter;
11+
import android.widget.ListView;
12+
13+
@EFragment(R.layout.list_fragment)
14+
public class MyListFragment extends ListFragment {
15+
16+
boolean listItemClicked = false;
17+
18+
@ViewById(value=android.R.id.list)
19+
ListView list;
20+
21+
@Override
22+
public void onActivityCreated(Bundle savedInstanceState) {
23+
super.onActivityCreated(savedInstanceState);
24+
25+
ArrayAdapter<CharSequence> adapter;
26+
27+
adapter = ArrayAdapter.createFromResource(getActivity(), R.array.planets_array, R.layout.simple_spinner_item);
28+
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
29+
30+
list.setAdapter(adapter);
31+
}
32+
33+
@ItemClick
34+
void listItemClicked(String string) {
35+
listItemClicked = true;
36+
}
37+
38+
}

0 commit comments

Comments
 (0)