小编Ale*_*xDG的帖子

使用RecyclerView适配器更新数据的最佳方法

当我必须使用带有ListView的经典适配器时,我在ListView中更新我的数据,如下所示:

myAdapter.swapArray(data);

public swapArray(List<Data> data) {
  clear();
  addAll(data);
  notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)

我想知道RecyclerView的最佳实践是什么.因为在RecyclerView适配器,你不能做clear,并addAllListView控件.

所以我尝试了一下notifyDataSetChanged,但它没有用.然后我尝试在我的视图上使用swapAdapter:

List<Data> data = newData;

MyRecyclerAdapter adapter = new MyRecyclerAdapter(data);

// swapAdapter on my recyclerView (instead of a .setAdapter like with a classic listView).
recyclerViewList.swapAdapter(adapter, false);
Run Code Online (Sandbox Code Playgroud)

但是使用这个最后的解决方案,我仍然需要创建我的适配器的新实例,我觉得它不是最好的解决方案.我应该能够在没有新的情况下更改我的数据MyRecyclerAdapter.

android listview android-adapter android-recyclerview

73
推荐指数
4
解决办法
10万
查看次数

Android连接到localhost

我正在尝试将我的Android应用程序连接到本地主机URL,这要归功于wamp服务器,但它不起作用.我的目标是获取json数据并解析这些数据.对于我的测试,我使用的设备不是模拟器,我在AndroidManifest.xml中使用权限:

<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)

我的网址看起来像这样:

String url = "http://10.0.2.2:8080/tests/PhpProject1/connectionBDD.php";
Run Code Online (Sandbox Code Playgroud)

我试过了 :

http://localhost/
http://10.0.2.2:8080/
http://10.0.2.2/
Run Code Online (Sandbox Code Playgroud)

但它到目前为止从未奏效:

    java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 80): connect failed: ECONNREFUSED (Connection refused)

    failed to connect to /10.0.2.2 (port 8080): connect failed: ETIMEDOUT (Connection timed out)

    java.net.ConnectException: failed to connect to /10.0.2.2 (port 80): connect failed: ETIMEDOUT (Connection timed out)
Run Code Online (Sandbox Code Playgroud)

然后我尝试在互联网上找到一个json url测试:http://headers.jsontest.com/

它工作得很好,我在这个地址得到了json数据.所以我想我的代码很好,这里的问题是我的localhost网址,我不知道应该是什么样的确切形式..我读了很多关于它的线程,但我没有找到解决方案.

这是我的代码:

主要活动 :

public class MainActivity extends Activity {
    private String url = "http://10.0.2.2:8080/tests/PhpProject1/connectionBDD.php";

    private ListView lv = null; …
Run Code Online (Sandbox Code Playgroud)

java android json wamp localhost

18
推荐指数
3
解决办法
7万
查看次数

Heroku:404(未找到),“dist/”未创建

我正在尝试了解 PWA 的工作原理,因此我想在 Heroku 上部署我的 React PWA。成功部署且没有错误后,当我访问我的 Web 应用程序页面时,我会看到以下白页:404 Not Found nginx

经过一番研究后我发现,我需要使用这个构建包: https: //github.com/heroku/heroku-buildpack-static

我创建了一个static.json配置文件:

{
  "root": "dist/",
  "clean_urls": true,
  "routes": {
    "/**": "index.html"
  }
}
Run Code Online (Sandbox Code Playgroud)

我添加了(就像那里解释的那样: https: //gist.github.com/hone/24b06869b4c1eca701f9)这两个构建包

$ heroku buildpacks:clear
$ heroku buildpacks:add heroku/nodejs
$ heroku buildpacks:add https://github.com/hone/heroku-buildpack-static
Run Code Online (Sandbox Code Playgroud)

但它仍然不起作用。当我访问我的页面时,仍然出现 404 not found。

我在日志中找不到明确的错误消息,部署后我的heroku 日志如下:

2017-08-24T08:40:15.818194+00:00 heroku[web.1]: Restarting
2017-08-24T08:40:15.819113+00:00 heroku[web.1]: State changed from up to starting
2017-08-24T08:40:15.520597+00:00 app[api]: Release v21 created by user me@gmail.com
2017-08-24T08:40:16.760078+00:00 app[web.1]: Going down, …
Run Code Online (Sandbox Code Playgroud)

nginx heroku reactjs webpack

5
推荐指数
0
解决办法
2243
查看次数

酶-测试嵌套组件是否正确渲染

我试图测试通过简单的布尔值更新状态时,是否在父组件中正确渲染了其子组件。在父组件下面:

class Parent extends Component {
  ...
  render() {
    const { ..., isReady } = this.state;
    const props = { ... };

    return(
      <div className="container page-content">

        { isReady ?
          <Child {...props} />
          :
          <div id="loader-wrapper">
            <div id="loader"></div>
          </div>
        }

      </div>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

我的测试是:

beforeEach(() => {
      wrapper = mount(<Parent isReady={true}/>);
    });

it('Should render Child component', () => {
      expect(wrapper.prop('isReady')).to.equal(true); // Working !!
      expect(wrapper.find(Child).length).to.equal(1); // Not Working -> equal 0
    });
Run Code Online (Sandbox Code Playgroud)

到目前为止,我再次检查了状态是否正确更改,当我检查包装程序的isReady状态时,这似乎是正确的。我很确定这部分工作正常。

我也尝试了wrapper.html(),即使isReady为true,我的加载程序也只能看到div部分。<form>..</form>永远不会呈现应为a的Child组件。因此,如果我尝试类似的操作:expect(wrapper.find('form').length).to.equal(1);则两者都不起作用。我不明白为什么。

此处的最佳实践应该是什么,以测试我的父母行为并查看我的子组件是否正确呈现?

更新:

1 …

unit-testing meteor reactjs enzyme

5
推荐指数
1
解决办法
3197
查看次数

只有一个透明边框的形状

我试图弄清楚如何创建一个仅右边框透明的形状:

+ + + + + + + +
+
+
+
+ + + + + + + +
Run Code Online (Sandbox Code Playgroud)

我想知道我该怎么做。目前我只有代表矩形的基本形状,但从现在起我不确定是否可以做我想做的事情:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <solid android:color="#07000000" /> <!-- Transparent background -->


    <corners
        android:topLeftRadius="10dp"
        android:bottomLeftRadius="10dp" />
    <stroke
        android:width="2dp"
        android:color="@android:color/white" />
</shape>
Run Code Online (Sandbox Code Playgroud)

android shapes drawable

4
推荐指数
1
解决办法
2361
查看次数

将Guava Range与自定义对象一起使用

我想知道是否可以使用Guava Range对自定义对象列表进行迭代。

我有这个示例,它应该在列表中获得5个项目的间隔:

Range<CustomObject> range = Range.closed(customObjectList.get(Auxiliar.index), customObjectList.get(Auxiliar.index + 4));
Run Code Online (Sandbox Code Playgroud)

然后,我想遍历此范围以获得我的对象列表,以便能够执行以下操作:

List<CustomObject> list = new ArrayList<CustomObject>();
for(CustomObject c : range){
    list.add(c)
}
Run Code Online (Sandbox Code Playgroud)

目前,我不能做一个番石榴范围本的foreach,而不是我要做的,像这里

for(int grade : ContiguousSet.create(yourRange, DiscreteDomain.integers())) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

但是这里的问题是,我不能使用DiscreteDomain.CustomObject()。

有没有办法将此Guava Range与CustomObject列表一起使用?

java range guava

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