Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AsyncTask/或线程仅在滚动时使列表视图行填充值_Java_Android_Multithreading_Android Asynctask - Fatal编程技术网

Java AsyncTask/或线程仅在滚动时使列表视图行填充值

Java AsyncTask/或线程仅在滚动时使列表视图行填充值,java,android,multithreading,android-asynctask,Java,Android,Multithreading,Android Asynctask,我的应用程序由一个自定义列表视图组成,每行包含文本 My MainActivity将翻译后的字符串放入名为feedData的HashMap,该HashMap由CustomListView类检索,其中为每行设置了TextView 关于我的自定义列表视图的所有内容都可以完美执行。我得到这个错误是因为我正在实现GoogleAPI转换,这迫使我使用AsyncTask或线程。值填充到每一行中,但仅当我上下滚动时 main活动 TranslateString(feedText, feedData);

我的应用程序由一个自定义列表视图组成,每行包含文本

My MainActivity
将翻译后的字符串放入名为
feedData
的HashMap,该HashMap由
CustomListView类
检索,其中为每行设置了
TextView

关于我的自定义列表视图的所有内容都可以完美执行。我得到这个错误是因为我正在实现GoogleAPI转换,这迫使我使用AsyncTask或线程。值填充到每一行中,但仅当我上下滚动时

main活动

  TranslateString(feedText, feedData);
  arrayFeedList.add(feedData);
翻译字符串方法:

 public void TranslateString(final String mText, final HashMap<String, String> mList) {



                    AsyncTask<Void, Void, Void> asyncTask = new AsyncTask<Void, Void, Void>() {
                        @Override
                        protected Void doInBackground(Void... voids) {

                            try {
                                Translate translate = TranslateOptions.builder().setApiKey("AIzaSyB7cCDBbeoZ2tYTH-Ynv25OaPraLmTG7Hw").build().getService();
                                Translation translation =
                                        translate.translate(
                                                mText,
                                                TranslateOption.sourceLanguage("tr"),
                                                TranslateOption.targetLanguage("en"));
                                returnedString = translation.getTranslatedText();

                                check = 1;

                            } catch (Exception e) {
                                 check = 2;

                            }

                            return null;
                        }
                        @Override
                        protected void onPostExecute(Void result) {
                            if(check == 1){
                                mList.put("feed", returnedString);
                            }
                            else if(check == 2){
                                mList.put("feed", mText + " " + getContext().getString(R.string.translationfailed) + " in catch");
                            }
                        }
                    };
                    asyncTask.execute();       
    }
   }
public void TranslateString(最终字符串多行文字,最终HashMap mList){
AsyncTask AsyncTask=新建AsyncTask(){
@凌驾
受保护的空位背景(空位…空位){
试一试{
Translate Translate=TranslateOptions.builder().setApiKey(“AIzaSyB7cCDBbeoZ2tYTH-Ynv25OaPraLmTG7Hw”).build().getService();
翻译=
翻译,翻译(
mText,
TranslateOption.sourceLanguage(“tr”),
目标语言(英语);
returnedString=translation.getTranslatedText();
检查=1;
}捕获(例外e){
检查=2;
}
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
如果(检查==1){
mList.put(“馈送”,返回字符串);
}
否则如果(检查==2){
mList.put(“feed”,mText+“”+getContext().getString(R.string.translationfailed)+“in catch”);
}
}
};
asyncTask.execute();
}
}

在我的MainActivity中执行此操作修复了我的问题:(在完全删除AsyncTask方法后)

   if (android.os.Build.VERSION.SDK_INT > 9)
    {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }