小编Ibu*_*ngo的帖子

(单位)ArrayAdapter的测试

ArrayAdapter在我的应用程序中有大量使用,因为大多数活动都持有ListView,我需要一些自定义的东西.

我看了一下android开发者文档中的测试类,但是无法找到一些示例或正确的测试类......

1)ArrayAdapterAndroid中是否有(单元)测试的最佳实践?

2)我可以选择错误的方法(使用适配器)并以这种方式杀死可测试性吗?

android unit-testing android-arrayadapter

21
推荐指数
1
解决办法
6628
查看次数

从Android上的TextView复制文本

我有一个ListView每个项目的地方TextView.

我想启用类似于EditText显示默认上下文菜单的长按行为,其中包含"全部选中","全部剪切","全部复制"等项目.

有没有一种简单的方法来实现这个TextView

select android contextmenu copy textview

14
推荐指数
3
解决办法
2万
查看次数

用于活动单元测试中的模拟数据源的Android技术

我是单元测试的新手,我一直在学习如何使用jUnit框架用于android(使用ActivityInstrumentationTestCase2),但我在如何将模拟数据源注入和活动时遇到了麻烦,例如:

在活动中我有这个

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState,R.layout.market_screen);
        ListView products = (ListView)findViewById(R.id.product_list);
        MarketsAdapter adapter = new  MarketsAdapter(this, new ProductDataSource());
        products.setAdapter(adapter);

}
Run Code Online (Sandbox Code Playgroud)

我目前将ProductDataSource传递给适配器,该适配器连接到web服务以引入适配器的产品.在我的测试中,我不想连接到webservice.将模拟数据源注入活动进行测试的最佳技术是什么?我应该在Application实例中创建ProductDataSource,然后在我的测试中使用MockApplication来创建模拟数据源吗?

谢谢

我通过在测试类setUp()方法中执行以下操作来解决:获取对它的引用ListView并使用设置模拟数据源setAdapter(MockDataSource).这必须在UI线程上使用runOnUiThread()方法运行.

mActivity = getActivity();
mDataSource = new FakeDataSource();     
mMarketsListView = (ListView)mActivity.findViewById(R.id.product_list);
mActivity.runOnUiThread(
      new Runnable() {
        public void run() {
          mMarketsListView.setAdapter(new MarketsAdapter(mActivity,mDataSource));

        } // end of run() method definition
   } // end of anonymous Runnable object instantiation
); // 
Run Code Online (Sandbox Code Playgroud)

android listview unit-testing adapter

6
推荐指数
1
解决办法
3136
查看次数

在Android中的EditView中可点击链接和复制/粘贴菜单

我的EditTextAndroid应用中有一个视图.我需要"内部链接",这意味着我需要一些按钮或跨越内部EditText,onClick我可以执行一些操作(不重定向到网页).我用ClickableSpan()这样的方式实现了这个按钮

linkWord = "my link";
link = new SpannableString(linkWord);
cs = new ClickableSpan(){
private String w = linkWord;
    @Override
    public void onClick(View widget) {
    wrd.setText(w);
    }
};
link.setSpan(cs, 0, linkWord.length(), 0);
et.append(link);
Run Code Online (Sandbox Code Playgroud)

为了使这个跨度可点击我使用

et.setMovementMethod(LinkMovementMethod.getInstance());

"内部链接"工作正常,但使用et.setMovementMethod()复制和粘贴项目后禁用OnLongClick菜单.这是一个问题,因为我需要"链接" EditText并同时复制此视图中的文本.

我有想法设置监听器的OnLongClickListener东西,如removeMovementMethod()临时禁用"链接"功能和使用菜单与复制/粘贴和再次处理文本切换setMovementMethod()方法后.但我不知道如何实现这一点.

你能帮助我吗?你可能还有另外一些方法......

谢谢!

android copy hyperlink android-edittext

5
推荐指数
2
解决办法
4776
查看次数

Android HashSet无法强制转换为LinkedHashSet

我有以下示例代码.应用程序第一次安装成功.但是,它会在重新安装时抛出错误.

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LinkedHashSet<String> planets = new LinkedHashSet<String>();
        planets.add("Earth");
        SharedPreferences prefs = getPreferences(0);
        prefs.edit().putStringSet("planets", planets).commit();
        prefs = getPreferences(0);
        planets = (LinkedHashSet<String>) prefs.getStringSet("planets", new  LinkedHashSet<String>());
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经粘贴了重新安装以下应用程序时产生的错误.

Caused by: java.lang.ClassCastException: java.util.HashSet cannot be cast to java.util.LinkedHashSet at com.example.test.MainActivity.onCreate(MainActivity.java:12)
Run Code Online (Sandbox Code Playgroud)

我想了解为什么保存LinkedHashSet不能被归还给LinkedHashSet.为什么它会HashSet被Android自动转换为?

java android hashset linkedhashset sharedpreferences

2
推荐指数
1
解决办法
2967
查看次数

用于ListView的Android单元测试performLongClick()不会触发OnItemLongClickListener()

ListView在我的Android应用程序中使用了一个.当用户onItemLongClick()对列表项执行操作时,会AlertDialog.Builder显示一个菜单.我正在编写单元测试来测试上述功能.以下代码

mListView.performLongClick();
Run Code Online (Sandbox Code Playgroud)

没有引发OnItemLongClickListener()ListView.Robotium对我来说不是一个选择.任何帮助将不胜感激?

android listview unit-testing android-alertdialog

0
推荐指数
1
解决办法
787
查看次数