小编Ale*_*ado的帖子

AsyncTask的get()方法:是否有任何情况下它实际上是最佳选择?

回答完这个问题之后,我对使用Android的AsyncTask类的get()方法的意义/用处产生了疑问.

public final Result get ()

Waits if necessary for the computation to complete, and then retrieves its result. 
Run Code Online (Sandbox Code Playgroud)

基本上,AsyncTask类的同步解决方案,阻止(冻结)UI直到后台操作完成.

除了测试目的,甚至在那些情况下,我无法真正想到它实际上是一个很好的解决方案,但我可能是错的,所以我感到好奇.

如果您需要用户实际等到AsyncTask完成,您可以显示Dialog或ProgressDialog,在每个时刻都可以控制UI.我知道它不完全相同,但恕我直言,它比使用该get()方法更好的方法.

java android android-asynctask

20
推荐指数
3
解决办法
8889
查看次数

android.text.format.DateFormat"HH"与java.text.SimpleDateFormat无法识别

当我使用"HH"标志时android.text.format.DateFormat,它被解释为文字"HH".但是当我使用java.text.SimpleDateFormat它时,它被解释为2位数小时.他们为什么不同?

我不是在找工作替代品(我已经知道我必须使用kk而不是HH).我只是好奇为什么"HH"不被认可.

Java示例:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Calendar calendar = Calendar.getInstance();

    String dateJava = new java.text.SimpleDateFormat(
        "dd-MM-yyyy HH:mm:ss").format(calendar.getTime());

    String dateAndroid = android.text.format.DateFormat.format(
        "dd-MM-yyyy HH:mm:ss", calendar).toString();

    TextView tvAndroid = (TextView) findViewById(R.id.tvAndroid);
    TextView tvJava = (TextView) findViewById(R.id.tvJava);

    tvAndroid.setText("Android: " + dateAndroid);  //prints 26-05-2013 HH:36:34
    tvJava.setText("Java: " + dateJava);           //prints 26-05-2013 22:36:34
}
Run Code Online (Sandbox Code Playgroud)

输出是:

Android: 26-05-2013 HH:36:34 
Java:    26-05-2013 22:36:34
Run Code Online (Sandbox Code Playgroud)

我希望两者都是 26-05-2013 22:36:34

Android的DateFormat有错误吗?

Java的SimpleDateFormat接受这些:

H   Hour in day (0-23)      Number …
Run Code Online (Sandbox Code Playgroud)

java android date-format simpledateformat

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

为什么要更改布局参数的设置解决我的"OnClickListener不能在GridView中的第一项工作"问题?

我正在使用GridView来显示一些图像并且我遇到了问题,因为onClickListener不适用于第一个图像.我在SO处发现了一些其他问题同样的问题,但我不喜欢他们的"正确答案",因为他们大多采用相同的方法:

基本上,每次调用getview时都要实例化视图.这对于性能很糟糕,并且它们可能会在许多设备中面临内存不足的问题.

在我的例子中,我在GridView中显示位于assets文件夹中的子文件夹内的图像.

我的原始代码带有"第一项"问题(实际上,我的原始代码实现了视图模式,但这个更简单并面临同样的问题):

    @Override
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView;

    if (convertView == null) {
        imageView = new ImageView(_activity);

    } else {
        imageView = (ImageView) convertView;
    }

    // get screen dimensions
    AssetManager assetManager = _activity.getAssets();
    InputStream assetIn = null;
    try {
        assetIn = assetManager.open(_assets_subdir + File.separator + _filePaths.get(position));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    Bitmap image = BitmapFactory.decodeStream(assetIn);
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setLayoutParams(new GridView.LayoutParams(imageWidth, imageWidth));
    imageView.setImageBitmap(image);

    // image view click …
Run Code Online (Sandbox Code Playgroud)

android gridview onclicklistener

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