在android中实现AsyncTask
我有一个将json数据作为列表输出的活动。但现在我想在一个片段中实现它。 在这个片段中,我想将其视为gridview。两个文件都很好用。但当我尝试实现AsyncTask时,我得到了几个无法访问的红旗代码。有人能帮我吗 已编辑:新建在android中实现AsyncTask,android,android-fragments,android-asynctask,gson,android-gridview,Android,Android Fragments,Android Asynctask,Gson,Android Gridview,我有一个将json数据作为列表输出的活动。但现在我想在一个片段中实现它。 在这个片段中,我想将其视为gridview。两个文件都很好用。但当我尝试实现AsyncTask时,我得到了几个无法访问的红旗代码。有人能帮我吗 已编辑:新建 public class SalesFragment extends Fragment { GridView gridView; @Override public View onCreateView(Layou
public class SalesFragment extends Fragment {
GridView gridView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View gv = inflater.inflate(R.layout.hot_sales, null);
gridView = (GridView) gv.findViewById(R.id.grid_view);
bindGridview();
return gv;
}
public void bindGridview() {
new MyAsyncTask(getActivity(),gridView).execute("");
}
class MyAsyncTask extends AsyncTask<String, String, String> {
GridView mGridView;
Activity mContext;
Response response;
public MyAsyncTask(Activity context,GridView gview) {
this.mGridView=gview;
this.mContext=context;
}
protected String doInBackground(String... params) {
File file = new File( Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data/sample.txt");
if(file.exists()) {
try{
Reader inputStreamReader = new InputStreamReader(new FileInputStream(file));
Gson gson = new Gson();
this.response = gson.fromJson(inputStreamReader, Response.class);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (@SuppressWarnings("hiding") IOException e){
e.printStackTrace();
}
}else{
System.out.println("Error");
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
//List<HashMap<String,String>> aList = new ArrayList<HashMap<String,String>>();
for(Sales sales : this.response.sales){
HashMap<String, String> hm = new HashMap<String,String>();
if (sales.getCategories1().contains("12")){
//hm.put("sale_title", "" + sales.getShort_title());
for(Shop shop : this.response.shops){
String image_file = new String( Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/images/" + shop.getImage());
if(shop.getId().equals(sales.getShop_id())){
hm.put("shop_image", image_file );
System.out.println(shop_image);
}
}
if(hm.size()>0){
gridView.setAdapter(new ImageAdapter(MainActivity.this,R.layout.grid_layout , imgArray, titleArray));
}
}
}
}
}
}
公共类SalesFragment扩展了片段{
GridView;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图gv=充气机。充气(R.layout.hot_sales,空);
gridView=(gridView)gv.findViewById(R.id.grid\u视图);
bindGridview();
返回gv;
}
public void bindGridview(){
新建MyAsyncTask(getActivity(),gridView)。执行(“”);
}
类MyAsyncTask扩展了AsyncTask{
GridView-mGridView;
活动mContext;
反应;
公共MyAsyncTask(活动上下文,GridView gview){
this.mGridView=gview;
this.mContext=上下文;
}
受保护的字符串doInBackground(字符串…参数){
File File=新文件(Environment.getExternalStorageDirectory().getAbsolutePath()+“/Android/data/sample.txt”);
if(file.exists()){
试一试{
Reader inputStreamReader=新的inputStreamReader(新文件InputStream(文件));
Gson Gson=新的Gson();
this.response=gson.fromJson(inputStreamReader,response.class);
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(@SuppressWarnings(“隐藏”)IOE异常){
e、 printStackTrace();
}
}否则{
System.out.println(“错误”);
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
//列表列表=新的ArrayList();
for(销售:this.response.Sales){
HashMap hm=新的HashMap();
if(sales.getCategories1()包含(“12”)){
//hm.put(“sale_title”,“”+sales.getShort_title());
for(Shop-Shop:this.response.shops){
String image_file=新字符串(Environment.getExternalStorageDirectory().getAbsolutePath())
+“/images/”+shop.getImage());
if(shop.getId().equals(sales.getShop_id())){
hm.put(“车间图像”,图像文件);
System.out.println(车间图像);
}
}
如果(hm.size()>0){
setAdapter(新的ImageAdapter(MainActivity.this,R.layout.grid_layout,imgArray,titleArray));
}
}
}
}
}
}
如何在上面的图像上调用图像到gridview?请帮助。在碎片中装箱是一个简单的步骤 在片段中,将代码放在
activityCreateview
new MyAsyncTask(getActivity(), mListView).execute("");
getActivity()
是与片段和活动通信的方法
在asynstak on post
context.mListView.setArrayAdapter(...........)
这是
public class SalesFragment extends Fragment {
GridView gridView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View gv = inflater.inflate(R.layout.hot_sales, null);
gridView = (GridView) gv.findViewById(R.id.grid_view);
bindGridView()
return gv;
//return super.onCreateView(inflater, container, savedInstanceState);
}
public void bindGridview()
{
new MyAsyncTask(getActivity(), gridView).execute("");
}
class MyAsyncTask extends AsyncTask<String, String, String>
{
GridView mGridView;
Activity mContex;
public MyAsyncTask(Activity contex,GridView gview)
{
this.mGridView=gview;
this.mContex=contex;
}
protected String doInBackground(String... params)
{
//fetch data
}
@Override
protected void onPostExecute(String result) {
{
for(Sales sales : this.response.sales){
HashMap<String, String> hm = new HashMap<String,String>();
if (sales.getCategories1().contains("12")){
//hm.put("sale_title", "" + sales.getShort_title());
for(Shop shop : this.response.shops){
String image_file = new String( Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/images/" + shop.getImage());
if(shop.getId().equals(sales.getShop_id())){
hm.put("shop_image", image_file );
System.out.println(shop_image);
}
}
}
}
if(hm.size()>0)
mcontext.mGridView.setAdapter(new ImageAdapter(mContext),hm);
}
公共类SalesFragment扩展了片段{
GridView;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图gv=充气机。充气(R.layout.hot_sales,空);
gridView=(gridView)gv.findViewById(R.id.grid\u视图);
bindGridView()
返回gv;
//返回super.onCreateView(充气机、容器、savedInstanceState);
}
public void bindGridview()
{
新建MyAsyncTask(getActivity(),gridView)。执行(“”);
}
类MyAsyncTask扩展了AsyncTask
{
GridView-mGridView;
活动mContex;
公共MyAsyncTask(活动上下文、GridView gview)
{
this.mGridView=gview;
this.mContex=contex;
}
受保护的字符串doInBackground(字符串…参数)
{
//获取数据
}
@凌驾
受保护的void onPostExecute(字符串结果){
{
for(销售:this.response.Sales){
HashMap hm=新的HashMap();
if(sales.getCategories1()包含(“12”)){
//hm.put(“sale_title”,“”+sales.getShort_title());
for(Shop-Shop:this.response.shops){
String image_file=新字符串(Environment.getExternalStorageDirectory().getAbsolutePath())
+“/images/”+shop.getImage());
if(shop.getId().equals(sales.getShop_id())){
hm.put(“车间图像”,图像文件);
System.out.println(车间图像);
}
}
}
}
如果(hm.size()>0)
mcontext.mGridView.setAdapter(新的ImageAdapter(mcontext),hm);
}
在获取数据之前,请使其与模型类似
public class ImageModel
{
String title;
String img;
}
ArrayList<ImageModel> arrayList=new ArrayList<ImageModel>();
公共类ImageModel
{
字符串标题;
字符串img;
}
ArrayList ArrayList=新的ArrayList();
用所需数据填充数组列表
然后
mcontext.mGridView.setAdapter(新的ImageAdapter(mcontext)、hm、arrayList);
//映像内适配器
公共类ImageAdapter扩展了ArrayAdapter{
公共ImageAdapter(上下文上下文、HashMap hm、ArrayList图像)
{
超级(上下文、右布局、活动);
}
//--代码
}
在适配器中使用哈希映射,并为图像分配位置
设置数据并从模型中获取值可能会发布一些代码?任何n
mcontext.mGridView.setAdapter(new ImageAdapter(mContext),hm,arrayList);
//in image adapter
public class ImageAdapter extends ArrayAdapter<String> {
public ImageAdapter(Context context, HashMap<String, String> hm,ArrayList<ImageModel> images )
{
super(context, R.layout.activity_t);
}
//--code
}