我可以用两个微调检索,我有一个名为dist.js一个javasript文件数据 [英] Can I use two spinners to retrieve data from a javasript file that i have named dist.js
问题描述
我想实现的是用来纺纱从镇,然后到镇上,然后选择要找回我在dist.js文件中定义旅行的距离和时间。它的工作原理伟大的,当我用html的web视图。但我不希望使用web视图。因此,我怎么能得到两个微调来计算呢?
What I want to achieve is to use to spinners to select from town and then to town and then to retrieve the distance and time of travel that i have defined in my dist.js file. It works great when i use html in webview. but I don't want to use webview. Therefore how can i get the two spinners to calculate this?
好吧试过,但仍然没有任何工程。这里是我的code为止。你能告诉我在做什么错了?
Okay have tried but still nothing works. here is my code so far. Can you tell what i am doing wrong?
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringWriter;
import java.io.Writer;
import org.json.JSONArray;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
public class MainActivity extends Activity{
Spinner s1;
Spinner s2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
s1 = (Spinner) findViewById(R.id.spinner1);
s2 = (Spinner) findViewById(R.id.spinner2);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.camp_sites, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s1.setAdapter(adapter);
InputStream is = context.getResources().openRawResource(R.raw.dist);
Writer writer = new StringWriter(is.available());
char[] buffer = new char[1024];
Reader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); {
try {
int n;
while ((n = reader.read(buffer)) != -1) {
writer.write(buffer, 0, n);
}
} finally {
reader.close();
}
String jsonString = writer.toString();
JSONArray json = new JSONArray(jsonString);}
}
public void onNothingSelected(AdapterView<?> parent) {
}
}
感谢你帮我这个问题!
推荐答案
加载JS文件,得到镇名称的数组,并把它们放在一个的 ArrayAdapter 。然后适配器传递到您的微调:
Load the js file, get an array of the town names, and put them in an ArrayAdapter. Then pass the adapter to your spinner:
spinner.setAdapter(adapter);
做一次为每个两个微调的。
Do this once for each of your two spinners.
更多关于微调: http://developer.android.com/导/主题/ UI /控制/ spinner.html
更新
要加载的js文件(我假设它包含了一个JSON数组),你可以把它放在资源/原材料
和做到这一点:
To load the js file (I assume it contains a JSON array), you can put it in resources/raw
and do this:
// open the input stream
InputStream is = context.getResources().openRawResource(R.raw.dist);
// read into a buffer
// NOTE: This is ugly, and there may be a better way, but it works.
Writer writer = new StringWriter(is.available());
char[] buffer = new char[1024];
Reader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
try {
int n;
while ((n = reader.read(buffer)) != -1) {
writer.write(buffer, 0, n);
}
} finally {
reader.close();
}
String jsonString = writer.toString();
// load into a JSONArray
// if your file contains a single object, use JSONObject instead
JSONArray json = new JSONArray(jsonString);
如果你的JSON文件是非常大的,有一种方法来解析流成JSON没有先读了整个事情,但它更复杂。我建议杰克逊是什么,以及真正为您所有的JSON需求一般。 GSON 是另一种选择。
If your json file is really big, there is a way to parse a stream into JSON without reading the whole thing first, but it's more complicated. I recommend Jackson for that, and really for all your JSON needs in general. Gson is another option.
这篇关于我可以用两个微调检索,我有一个名为dist.js一个javasript文件数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!