小编Pau*_*rke的帖子

以编程方式更改CardView的背景颜色

所述CardView具有属性card_view:cardBackgroundColor来定义的背景颜色.这个属性工作正常.

同时,没有一种动态改变颜色的方法.

我刚刚尝试过以下解决方案:

mCardView.setBackgroundColor(...);
Run Code Online (Sandbox Code Playgroud)

或使用cardView内的布局

   <android.support.v7.widget.CardView>
        <LinearLayout
            android:id="@+id/inside_layout">
    </android.support.v7.widget.CardView>  

 View insideLayout = mCardView.findViewById(R.id.inside_layout);
 cardLayout.setBackgroundColor(XXXX);
Run Code Online (Sandbox Code Playgroud)

这些解决方案不起作用,因为该卡具有cardCornerRadius.

android android-cardview android-5.0-lollipop

114
推荐指数
9
解决办法
12万
查看次数

使用Node.js,Express和Trialpay进行HMAC MD5验证

我正在尝试使用Node.js和Express验证从TrialPay发送的消息.TrialPay使用HMAC-MD5哈希对请求进行签名,并提供有关验证的这些说明.

这是我的代码:

app.post('/trialpay', function(req, res) {

    var key = "[MY MERCHANT KEY]";
    var hash = req.header("TrialPay-HMAC-MD5");
    var data = req.body.toString();

    var crypted = require("crypto").createHmac("md5", key)
        .update(data)
        .digest("hex");

    if (hash == crypted) {
        res.writeHead(200, {"Content-Type": "plain/text"});
        res.end("Success!");
    } else {
        throw new Error("Invalid TrialPay Hash");
    }  
});
Run Code Online (Sandbox Code Playgroud)

显然,这不起作用(哈希不匹配).

免责声明:我对Node.js非常陌生,并且开始时只有很少的Javascript经验.

UPDATE

我没有意识到链接受到保护.

TrialPay使用您的通知密钥(在您的帐户信息中设置)作为签署HMAC的密钥.对于GET请求,将对签名后面的问号(在URL中)进行签名.对于POST请求,整个POST正文都已签名.

以下是TrialPay如何指示您在Google App Engine(Python)中进行验证的示例:

class MyHandler(webapp.RequestHandler):
  def post(self):
  key = '[YOUR MERCHANT KEY]'
  tphash = self.request.headers['TrialPay-HMAC-MD5'] 
  if hmacmd5(key,self.request.body) != tphash:
    logging.info('invalid trialpay hash')
    return 
Run Code Online (Sandbox Code Playgroud)

更新2

req.body打印出来的: …

javascript cryptography node.js express

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

将String转换为double时GSON中的NumberFormatException

我正在使用格式不正确的JSON响应.所有字段都以字段形式返回Strings.不幸的是,我无法控制返回数据.

我正在使用Gson并尝试解析包含如下字段的JSON对象:

{
        [...]
    "cost": "9.25"
}
Run Code Online (Sandbox Code Playgroud)

它显然应该打印成一个Number.当我尝试将其解析为a时String,Number或者double我得到NumberFormatException:

com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: 
        [...]
    at com.myapp.android.LauncherActivity$1.onSuccess(LauncherActivity.java:69)
        [...]
Caused by: java.lang.NumberFormatException: 
    at org.apache.harmony.luni.util.FloatingPointParser.parseDouble(FloatingPointParser.java:267)
    at java.lang.Double.parseDouble(Double.java:285)
    at com.google.gson.stream.JsonReader.nextInt(JsonReader.java:599)
    at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:228)
    ... 19 more
Run Code Online (Sandbox Code Playgroud)

LauncherActivity第69行:

Item item = gson.fromJson(response, Item.class);
Run Code Online (Sandbox Code Playgroud)

所以我按照这个类似的问题尝试创建一个类似的问题TypeAdapter:

public class CostTypeAdapter implements JsonDeserializer<Double>, JsonSerializer<Double> {

    public Double deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
        Double cost;
        try {
            cost = json.getAsDouble();
        } catch (NumberFormatException …
Run Code Online (Sandbox Code Playgroud)

java android json gson

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

REGEXP的SQLite LIKE替代方案,匹配任何Word的开始

在Android中的SQLite查询中似乎不可能使用REGEXP.如果有可能,请指出正确的方向.

有没有办法使用LIKE条件在结果中的任何单词的开头查询表达式?

例:


参赛作品:
1.最低
2.铝合金
3.最后一分钟

查询:
"min"

期望的结果
(1)最小
(3)最后一分钟


(2)铝


这基本上是我当前的代码,它将返回(2)铝:

public Cursor search(String query) {
    return mDb.query(TABLE, COLUMNS, KEY_NAME +" like ?", new String[] { "%"+query+"%" }, null, null, null);
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

sqlite android

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