我想解析JSON数组并使用gson.首先,我可以记录JSON输出,服务器明确地响应客户端.
这是我的JSON输出:
[
{
id : '1',
title: 'sample title',
....
},
{
id : '2',
title: 'sample title',
....
},
...
]
Run Code Online (Sandbox Code Playgroud)
我试过这个结构进行解析.一个类,它依赖于单个array和ArrayList所有JSONArray.
public class PostEntity {
private ArrayList<Post> postList = new ArrayList<Post>();
public List<Post> getPostList() {
return postList;
}
public void setPostList(List<Post> postList) {
this.postList = (ArrayList<Post>)postList;
}
}
Run Code Online (Sandbox Code Playgroud)
发布课程:
public class Post {
private String id;
private String title;
/* getters & setters */
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用gson没有错误,没有警告和没有日志:
GsonBuilder gsonb = new GsonBuilder();
Gson gson …Run Code Online (Sandbox Code Playgroud) 可能重复:
AsyncTask阻止UI威胁并显示延迟的进度条
我想在从任何服务器检索JSON时显示progressDialog.所以我使用AsyncTask作为解决方案(不确定任何不同的出路).
一切都很好,ProgressDialog正常工作,直到我使用AsyncTask实例调用.get()方法.我想它会以某种方式阻止UI.这是我的AsyncTask:
public class myAsync extends AsyncTask<String, String, List> {
String message; // for dialog message
ProgressDialog progress;
Intent myIntent;
Context ctx;
public myAsync(String message, Context ctx) {
this.message = message;
this.ctx = ctx;
progress = new ProgressDialog(ctx);
}
@Override
protected void onPreExecute() {
progress.setMessage(message);
progress.setIndeterminate(true);
progress.setCancelable(false);
progress.show();
}
@Override
protected List doInBackground(String... params) {
//returns any list after the task
return anyList;
}
@Override
protected void onPostExecute(List result) {
if(progress.isShowing())
progress.dismiss();
}
}
Run Code Online (Sandbox Code Playgroud)
这里是调用AsyncTask的myActivity:
myAsync asyncTask = …Run Code Online (Sandbox Code Playgroud) 可能重复:
透明,无边框ProgressDialog
我Theme.Light在我的应用程序中使用.使用时Progress Dialog,对话框颜色的文字是黑色的,这并不令人鼓舞.
我尝试了这个仅更改对话框的文本颜色,但没有用:
<style name="Theme.MyDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowNoTitle">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:textColor">#FFFFFF</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我是否必须在任何XML中设置样式(MyDialog)?或者我如何更改对话框的文本颜色?
提前致谢.
我有一个Android应用程序,JSONObject通过使用ByteArrayEntity对象发布为实体.这是它的样子:
post.setEntity(new ByteArrayEntity(entity.getBytes("UTF-8")));
result = client.execute(post, handler);
Run Code Online (Sandbox Code Playgroud)
实体是一个String.处理程序是ResponseHandler<String>和客户端是一个HttpClient.这在模拟器和某些设备上运行良好.但是,有时我在执行时会得到OutOfMemoryError x10i(也称为XPERIA).
这是堆栈:
java.lang.OutOfMemoryError
at org.apache.http.impl.io.AbstractSessionInputBuffer.init(AbstractSessionInputBuffer.java:79)
at org.apache.http.impl.io.SocketInputBuffer.<init>(SocketInputBuffer.java:93)
at org.apache.http.impl.SocketHttpClientConnection.createSessionInputBuffer(SocketHttpClientConnection.java:83)
at org.apache.http.impl.conn.DefaultClientConnection.createSessionInputBuffer(DefaultClientConnection.java:170)
at org.apache.http.impl.SocketHttpClientConnection.bind(SocketHttpClientConnection.java:106)
at org.apache.http.impl.conn.DefaultClientConnection.openCompleted(DefaultClientConnection.java:129)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:171)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:359)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:580)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:678)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:652)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
at com.test.application.api.Request.post(Request.java:102)
at com.test.application.api.API.getResult(API.java:123)
at com.test.application.api.APITask.doInBackground(APITask.java:127)
at com.test.application.api.APITask.doInBackground(APITask.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
at java.lang.Thread.run(Thread.java:1019)
Run Code Online (Sandbox Code Playgroud)
正如我所说,我只是将JSONObject发布为String.它最多可能是200个字符.怎么了?
我知道我想要成功可能会很奇怪.
让我详细解释一下.首先,我想在Activity屏幕中使用两个ListView.就像Pinterest的样子一样.(我不确定它是否正确,但它被命名为异构gridview.)我还需要实现一件事:延迟加载.我的活动中有大约30张图片,因此一次获取所有图片并不好.这就是我需要延迟加载的原因.
所以首先,我思考如何获得那种外观,我的意思是异构的gridview.然后决定加入LinearLayout一个ScrollView.线条具有垂直方向.通过thay方法,我在线性布局中使用奇偶方法添加了我的新视图.
虽然根据我的知识没有任何适配器,但是没有办法控制显示哪些项目.所以懒惰负载不合适.
我也尝试了两种ListView在Activity,但有一定的滞后性和同步还有滚动的问题.另一方面,它有一个糟糕的回收.
所以在这种情况下,我想问有没有办法填充LinearLayouts使用Adapter?或者你会建议创建异构网格视图,还有延迟加载.
如果我的方法是错误的,我就不会改变它.
任何线索对我来说都很棒.如果有不清楚的地方,请说明.我会详细解释一下.
正如我在标题上提到的,app也有一个ScrollView和一个GestureDetector.在ScrollView的触摸事件之外,GestureDetector处理从左到右和从右到左的滑动操作.他们都运作良好.
现在我想添加一个GestureLibrary-I表示raw-到Activity.我看了不同的来源,并以某种方式添加得当.简单地说,布局看起来像这样:
<android.gesture.GestureOverlayView
android:id="@+id/gOverlay"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ScrollView
android:id="@+id/content_scroll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="none">
</ScrollView>
<!-- Other views -->
</android.gesture.GestureOverlayView>
Run Code Online (Sandbox Code Playgroud)
这是我想要的画(黄线),但它没有触发任何方法.这是我实施的方式OnGesturePerformedListener:
/*
* Gestures
*/
gLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures);
if (!gLibrary.load()) { finish(); }
GestureOverlayView gestureOverlayView = (GestureOverlayView) findViewById(R.id.gOverlay);
gestureOverlayView.addOnGesturePerformedListener(gestureListener);
Run Code Online (Sandbox Code Playgroud)
这是gestureListener:
private OnGesturePerformedListener gestureListener = new OnGesturePerformedListener() {
public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
ArrayList<Prediction> predictions = gLibrary.recognize(gesture);
if (predictions.size() > 1) {
for(Prediction prediction: predictions){
Log.d("Test", "Looking for gestures");
} …Run Code Online (Sandbox Code Playgroud) 我在使用RemoteView时遇到了一些问题.只想制作一个显示电池电量的小部件.我已经完成了所有其他的事情.
这是我的班级:
public class BatteryLevel extends AppWidgetProvider{
public void onUpdate( Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds ){
context.startService(new Intent(context, BatteryMonitorReceiver.class));
}
public static class BatteryMonitorReceiver extends Service{
private int currentBatteryLevel = 0;
private BroadcastReceiver batteryReceiver = new BroadcastReceiver(){
@Override
public void onReceive( Context context, Intent intent ){
currentBatteryLevel = intent.getIntExtra( "level", 0 );
}
};
@Override
public void onStart (Intent intent, int startId) {
registerReceiver( this.batteryReceiver, new IntentFilter( Intent.ACTION_BATTERY_CHANGED ) );
RemoteViews updateViews = new RemoteViews( getPackageName(), R.layout.main );
updateViews.setTextViewText( … 我用它Alarm Manager来更新一个小部件Service.我有两个不同的问题.
第一个问题:我正在使用Alarm Manager的意图调用该服务.像这样:
alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, MyService.class);
pi = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
context.startService(new Intent(context, MyService.class));
Long repeat = Long.parseLong(prefs.getString("update_preference", "600"));
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis(), 1000*repeat, pi);
Run Code Online (Sandbox Code Playgroud)
这是错的吗?
它外观和工作正常.但是当我查看工作服务时,我无法在列表中看到我的服务名称.也许它不是作为单一/单独服务运行的.刚看到应用程序名称(不是服务).我不确定如何分离或重要吗?
另一个问题:很长一段时间,运行控制小部件更新的应用程序以某种方式关闭(手动或由任务杀手).当然Alarm Manager要停下来,小部件的功能也会停止.例如按钮点击.
但是,Twitter解决了这个问题.当窗口小部件处于活动状态时,如果我关闭主要应用程序(Twitter) - 它控制窗口小部件 - 而不是单击窗口小部件,不知何故窗口小部件触发应用程序并且它再次启动.按钮工作正常.怎么可能?
任何帮助,将不胜感激.
我有一个HashMap<String,String>静态方法,将此地图返回给Activity.
方法如下所示:
public static HashMap<String, String> getAll() {
HashMap<String, String> map = new HashMap<String,String>();
map.put("ab", "value1");
map.put("bc", "value2");
map.put("de", "value3");
return map;
}
Run Code Online (Sandbox Code Playgroud)
我想用旋转器来使用那个地图.所以活动看起来像这样:
List list = new ArrayList<String>();
HashMap<String, String> map = Constants.getAll();
for (String key : map.keySet()) {
list.add(Constants.getAll().get(key).toString());
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinTest = (Spinner)findViewById(R.id.spinTest);
spinTest.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
urlDebug.setText(list.get(arg2).toString());
}
public void onNothingSelected(AdapterView<?> arg0) {
}
}); …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Xcode 13.2 beta.
收到此错误:mkdir(/Debug-iphoneos, S_IRWXU | S_IRWXG | S_IRWXO): Read-only file system (30)错误。
为了解决这个问题,我尝试授予文件夹写入权限,但它不起作用。有什么帮助吗?