小编Ogu*_*han的帖子

如何使用Gson解析JSON数组

我想解析JSON数组并使用gson.首先,我可以记录JSON输出,服务器明确地响应客户端.

这是我的JSON输出:

 [
      {
           id : '1',
           title: 'sample title',
           ....
      },
      {
           id : '2',
           title: 'sample title',
           ....
     },
      ...
 ]
Run Code Online (Sandbox Code Playgroud)

我试过这个结构进行解析.一个类,它依赖于单个arrayArrayList所有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)

java arrays android json gson

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

调用AsyncTask.get()时未显示ProgressDialog

可能重复:
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)

android progressdialog android-asynctask

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

Android:如何更改ProgressDialog的文本颜色?

可能重复:
透明,无边框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 progressdialog android-theme

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

HttpClient.execute抛出OutOfMemoryError

我有一个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个字符.怎么了?

java android json httpclient out-of-memory

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

如何在填充布局时使用适配器

我知道我想要成功可能会很奇怪.

让我详细解释一下.首先,我想在Activity屏幕中使用两个ListView.就像Pinterest的样子一样.(我不确定它是否正确,但它被命名为异构gridview.)我还需要实现一件事:延迟加载.我的活动中有大约30张图片,因此一次获取所有图片并不好.这就是我需要延迟加载的原因.

所以首先,我思考如何获得那种外观,我的意思是异构的gridview.然后决定加入LinearLayout一个ScrollView.线条具有垂直方向.通过thay方法,我在线性布局中使用奇偶方法添加了我的新视图.

虽然根据我的知识没有任何适配器,但是没有办法控制显示哪些项目.所以懒惰负载不合适.

我也尝试了两种ListViewActivity,但有一定的滞后性和同步还有滚动的问题.另一方面,它有一个糟糕的回收.

所以在这种情况下,我想问有没有办法填充LinearLayouts使用Adapter?或者你会建议创建异构网格视图,还有延迟加载.

如果我的方法是错误的,我就不会改变它.

任何线索对我来说都很棒.如果有不清楚的地方,请说明.我会详细解释一下.

android android-layout

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

使用GestureLibrary和ScrollView

正如我在标题上提到的,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)

android gesture-recognition gesture

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

Android:BatteryLevel小部件不更新

我在使用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( …

service android android-widget

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

使用Alarm Manager即使App关闭了?

我用它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) - 它控制窗口小部件 - 而不是单击窗口小部件,不知何故窗口小部件触发应用程序并且它再次启动.按钮工作正常.怎么可能?

任何帮助,将不胜感激.

android alarmmanager

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

如何使用ArrayAdapter对在Android中添加的HashMap进行排序

我有一个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)

android hashmap android-spinner

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

mkdir(/Debug-iphoneos, S_IRWXU | S_IRWXG | S_IRWXO):Xcode 13.2 beta 上的只读文件系统 (30) 错误

我正在尝试在Xcode 13.2 beta.

收到此错误:mkdir(/Debug-iphoneos, S_IRWXU | S_IRWXG | S_IRWXO): Read-only file system (30)错误。

为了解决这个问题,我尝试授予文件夹写入权限,但它不起作用。有什么帮助吗?

xcode ios swift xcode13

6
推荐指数
0
解决办法
413
查看次数