我刚刚进入Android开发阶段,并决定我对这个新领域的第一次征服将是掌握手机对来电的反应.
稍微用谷歌搜索引导我到http://www.compiletimeerror.com/2013/08/android-call-state-listener-example.html#.Vi3Ren4vfwM(所以我的代码与他/她的代码有着惊人的相似之处).
我的主要(也是唯一)活动如下所示:
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.Menu;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TelephonyManager TelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
TelephonyMgr.listen(new TeleListener(),
PhoneStateListener.LISTEN_CALL_STATE);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
class TeleListener extends PhoneStateListener {
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
// CALL_STATE_IDLE;
Log.d("MyLittleDebugger", "I'm …Run Code Online (Sandbox Code Playgroud) 我最近开始玩JSON字符串,并被告知谷歌自己的库Gson,是处理这些的新的和时髦的方式.
我理解它的方式是JSON字符串本质上是一个地图.每个变量指向字符串中的值.
例如:
String jsonInput2 = "{\"created_at\":\"Sat Feb 08 15:37:37 +0000 2014\",\"id\":432176397474623489\"}
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好.JSON创建此字符串时的信息可以使用以下代码分配给变量:
Gson gson = new Gson();
Map<String, String> map = new HashMap<String, String>();
map = (Map<String, String>) gson.fromJson(jsonInput, map.getClass());
String createdAt = map.get("created_at");
Run Code Online (Sandbox Code Playgroud)
它在简约之美中几乎是艺术性的.但这就是美丽结束的地方,我的困惑开始了.
以下是上述JSON字符串的扩展名;
String jsonInput2 = "{\"created_at\":\"Sat Feb 08 15:37:37 +0000 2014\",\"id\":432176397474623489\",\"user\":{\"id_str\":\"366301747\",\"name\":\"somethingClever\",\"screen_name\":\"somethingCoolAndClever\"}}";
Run Code Online (Sandbox Code Playgroud)
我的问题是这些"括号内的括号"如何适用于该user部分JSON?
如何将这些内括号中指定的值分配给变量?
任何人都可以向我解释,或者在代码中向我展示如何Gson处理这样的东西,以及我如何使用它?
简而言之,为什么......
String jsonInput = "{\"created_at\":\"Sat Feb 08 15:37:37 +0000 2014\",\"id\":432176397474623489\",\"user\":{\"id_str\":\"366301747\",\"name\":\"somethingClever\",\"screen_name\":\"somethingCoolAndClever\"}}";
Gson gson = new Gson(); …Run Code Online (Sandbox Code Playgroud) 这可能是标题说明的所有问题之一.
我非常着迷readValue(file, class)于在Jackson库中找到的ObjectMapper 方法,该方法从文件中读取JSON字符串并将其分配给对象.
我很好奇是否可以通过从字符串中获取JSON并将其应用于对象来实现.
某种替代readValue()方法,它接受String而不是文件,并将其分配给对象?
例如,虽然默认readValue(file, class)方法如下所示:
ObjectMapper mapper = new ObjectMapper();
Student student = mapper.readValue("C:\\student.json", Student.class);
Run Code Online (Sandbox Code Playgroud)
我想知道杰克逊是否有某种方法允许以下方法:
ObjectMapper mapper = new ObjectMapper();
Student student = mapper.readValue("{\"id\":100,\"firstName\":\"Adam\"}", Student.class);
Run Code Online (Sandbox Code Playgroud)
第二个示例采用字符串和类的对象,而第一个示例采用文件和类的对象.
我只是想切出中间人,在这种情况下,文件.
这是可行的还是在杰克逊的限制范围内不存在这样的方法?
我只想说我还在学习Java和Eclipse的微妙之处,我来找你,因为我不确定如何正确地将我的问题用于谷歌或StackOverflow的搜索引擎.道歉,如果它无限琐碎.
我试图理解将JSON格式字符串转换为Java中的对象的过程.我在网上找到以下示例:
import java.io.IOException;
import org.apache.log4j.Logger;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;public class JsonToJavaConverter {
private static Logger logger = Logger.getLogger(JsonToJavaConverter.class);
public static void main(String args[]) throws JsonParseException,
JsonMappingException, IOException {
JsonToJavaConverter converter = new JsonToJavaConverter();
String json = "{\n" + " \"name\": \"Garima\",\n"
+ " \"surname\": \"Joshi\",\n"
+ " \"phone\": 9832734651}";
// converting JSON String to Java object
converter.fromJson(json);
}
public Object fromJson(String json) throws JsonParseException,
JsonMappingException, IOException {
User garima = new ObjectMapper().readValue(json, User.class);
logger.info("Java Object created from …Run Code Online (Sandbox Code Playgroud) 正如标题所描述的,我正在尝试为我的类分配一个 json 字符串,但 json 字符串可能包含几个我没有在它们被分配到的类中创建的变量。
为了首先向您展示什么有效,我有
ObjectMapper mapper = new ObjectMapper();
try {
Tweet tweet1 = mapper
.readValue(
"{\"created_at\":\"Sat Feb 08 11:26:02 +0000 2014\"}",
Tweet.class);
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为 Tweet 类具有变量“created_at”,并带有 getter 和 setter 方法。
就像提到的那样,我需要期望 readValue 方法中的字符串包含在我的 Tweet 类中找不到的东西。
为了解决这个问题,我导入并使用:
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
Run Code Online (Sandbox Code Playgroud)
从理论上讲,这可以帮助我避免那里的所有未知数,并且只分配要在 Tweet 类中找到的值。
因此,我添加了一个在 Tweet 中找不到的值,如下所示:
ObjectMapper mapper = new ObjectMapper();
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
try {
Tweet tweet1 = mapper
.readValue(
"{\"created_at\":\"Sat Feb 08 11:26:02 +0000 2014\",\"id\":432113085571407872\"}",
Tweet.class);
} catch …Run Code Online (Sandbox Code Playgroud) 合理的警告:我是C#Outlook 的新手,所以请耐心等待。
我一直在尝试在Outlook中使用电子邮件来构建自己的快速又脏的插件,但是该插件要求我将附件发送到其他系统。
长话短说; 为此,我需要将Outlook项目的邮件附件转换为byte数组。
到目前为止,我所拥有的(完整的代码显然比这要长得多,但是我敢肯定,与坐下来阅读代码的上下一页相比,我们所有人都有更好的事情要做):
Outlook.Selection sel = control.Context as Outlook.Selection;
Outlook.MailItem mail = sel[1];
Outlook.Attachment a = mail.Attachments[0];
Run Code Online (Sandbox Code Playgroud)
问题是,我不知道如何转换a为byte数组。
PS:关于如何将byte数组转换为邮件,我知道大约有十亿个答案,但是没有一个可以解释如何使数组反过来运行的答案。
编辑1:我宁愿不必保存文件。
所以我一直在研究一个简单的小方法,它会返回一个Stringas Calendar对象.
这就是我所拥有的:
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);
try {
cal.setTime(sdf.parse(this.getCreated_at()));
}
catch (ParseException e) {
e.printStackTrace();
}
return cal;
Run Code Online (Sandbox Code Playgroud)
现在假设String获得this.getCreated_at())的总是处于所需的格式,理论上这应该是完美的.
只有一个小打嗝.
假设this.getCreated_at())返回Mon Feb 10 18:52:54 +0000 2014.应该不是问题吧?格式是正确的,一切.
但是,当我有我的主要方法时,请执行以下操作:
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy");
System.out.println(sdf.format(... ... ....stringToCalendar().getTime()));
Run Code Online (Sandbox Code Playgroud)
它给了我以下输出:
ma feb 10 19:52:54 +0100 2014
Run Code Online (Sandbox Code Playgroud)
你可能已经注意到,我的问题是,首先,时间是错误的.它增加了一个小时.
其次,它的翻译文本字段Mon和Feb成ma和feb它们翻译挪威,在那里我现在编码的地方. …
我决定使用一个ListBox用于我的应用程序,在这种情况下,慈善命名lb.我继续填充内容(只有少数几个string)并操纵它的大小和外观,然后将它打成我的形状.
在我玩的选项中,我提到了lb.SelectionMode = SelectionMode.MultiSimple;,因为我希望用户能够选择我string的一个或多个.
现在,直到我添加该SelectionMode行的那一点,lb.SelectedIndex总是指向用户选择的选择(显然是在它之后).
但是当选择多个项目时似乎没有这样做.它似乎只是指向选择的"第一" string.
有什么方法我可以告诉它去NEXT选择的项目,或者可能获得一个新的列表,其中包含所有选定项目的索引?
我怎样才能最好地获取用户选择的所有选定字符串?
标题问题总结得很好,但假设我使用Java进行编码并且HashMap看起来像这样(它显然有很多条目):
Map<String, Integer> myMap = new HashMap<>();
myMap.put{"a", 1}
myMap.put{"b", 2}
myMap.put{"c", 2}
myMap.put{"d", 3}
Run Code Online (Sandbox Code Playgroud)
现在,我不喜欢与2的值项,所以我想删除所有尽可能有效地,留下我只能与值1或3项.
它应该看起来好像我的地图是这样的:
Map<String, Integer> myMap = new HashMap<>();
myMap.put{"a", 1}
myMap.put{"d", 3}
Run Code Online (Sandbox Code Playgroud)
好像我的2值条目从来没有在那里!
我有什么选择以有效的方式做到这一点?
这可能是一个奇怪的问题,所以我请求你们在这个问题上与我相提并论.
我想向一个人提供信息JFrame.特别是,a String.
这是捕获,它是一个非常长的String.比如,里程.总共想想几十行信息.
它有点像电话簿,其名称多于您可能适合的页面,并且您只能使用该页面.
所以我在想滚动条.
我试过了:
JTextArea area = new JTextArea(veryLongText.toString());
JScrollPane scrollPane = new JScrollPane(area);
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为在我添加更多文本之前我无法向下滚动.这不是我想要的.
简单来说,我想要一个文本框,如果窗口太小而无法容纳其中的所有文本,我可以滚动它.
我该怎么做呢?
我刚刚开始学习SQL,并且正在尝试创建一个表,并在CSV-file 上填充一些数据.
以下是尝试执行此操作的应用程序:
public sqlThingy() throws Exception {
File spritesheetsCreate = new File("sql/spritesheetsCreate.sql");
File spritesheetsData = new File("sql/spritesheetsData.sql");
Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
Connection conn = DriverManager
.getConnection("jdbc:derby:TESTNAME;create=true");
//CREATE TABLE
try (PreparedStatement statement = conn
.prepareStatement(readFile(spritesheetsCreate))) {
statement.execute();
}
//FILL TABLE WITH DATA
try (PreparedStatement ps = conn.prepareStatement(readFile(spritesheetsData))) {
try (CSVReader rdr = new CSVReader(new FileReader(new File(
"res/spritesheets.csv")), ',', '"', 1)) {
for (String[] row : rdr.readAll()) {
ps.setString(1, row[0]);
ps.setString(2, row[1]);
ps.setInt(3, Integer.valueOf(row[2]));
ps.execute();
}
}
}
}
private …Run Code Online (Sandbox Code Playgroud)