2017-01-03 82 views
0

數據回答了ME如何使用自定義適配器解析服務器從

後,我很困惑放在哪裏以及如何使用我的自定義適配器。 我的Parser.class有它自己的Adapter,我的MainActivity傳遞3個參數給Parser.class(context,url,listview)。

(使我的問題簡單)

創建自定義佈局,自定義適配器後,和我實例化自定義適配器,我不知道該怎麼辦。

我想我的實例化自定義適配器在我的MainActivity然後創建我的Parser.class MainActivity m = new MainActivity();,只是用我的自定義列表視圖的textviews像m.name_tv.setText(name);m.price_tv.setText(price)然後改變android.R.layout.simple_list_item_1到我的自定義列表視圖佈局R.layout.list_layout

我只是在試驗,因爲我無法理解。 請幫忙。

這是我Parser.class

public class Parser extends AsyncTask<Void,Integer,Integer> { 



Context c; 
ListView lv; 

String data; 


ArrayList<String> categories = new ArrayList<>(); 
ProgressDialog pd; 

public Parser(Context c, String data, ListView lv) { 
    this.c = c; 
    this.data = data; 
    this.lv = lv; 

} 

@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
    pd = new ProgressDialog(c); 
    pd.setTitle("Parsing Data"); 
    pd.setMessage("Please Wait..."); 
    pd.show(); 
} 

@Override 
protected Integer doInBackground(Void... params) { 


    return this.parse(); 
} 

@Override 
protected void onPostExecute(Integer integer) { 
    super.onPostExecute(integer); 


    if(integer == 1) 
    { 
     //ADAPTER 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(c, android.R.layout.simple_list_item_1, categories); 
     lv.setAdapter(adapter); 

     lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       if(position == 0){ 



       } 


      } 
     }); 

    }else 
    { 
     Toast.makeText(c,"Unable to Parse",Toast.LENGTH_SHORT).show(); 
    } 
    pd.dismiss(); 
} 

//PARSE RECEIVED DATA 
private int parse(){ 


    try 
    { 

     //ADD THAT DATA TO JSON ARRAY FIRST 
     JSONArray ja = new JSONArray(data); 


     //CREATE JO OBJECT TO HOLD A SINGLE ITEM 
     JSONObject jo = null; 

     categories.clear(); 

     //LOOP THROUGH ARRAY 
     for(int i =0 ; i<ja.length();i++) 
     { 
      jo = ja.getJSONObject(i); 
      //RETRIEVE NAME 
      name=jo.getString("item_name"); 
      price=jo.getString("item_price"); 

      //ADD TO ARRAY LIST 
      categories.add(name + " " + price); 





     } 
     return 1; 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 


    return 0; 
} 

}

它應該是最好不要單獨的類或者它會工作一樣嗎?

回答

0

你應該從Web服務響應和一步到位

您可以用很好的方式達到這一點,

首先創建類JSON屬性名

解析它(JSON對象或JSON數組)

你的情況

Class JsonItem { 
string item_name; 
string item_price; 

// create getter and setter 

} 

二使用Gson解析您的respons Ë

Gson gson = new Gson(); 

// 1. JSON to Java object, read it from a file. 
JsonItem staff = gson.fromJson(YOUR_JSON_Here, JsonItem.class); 

這是所有

+0

我不認爲你讀過我的問題先生。我可以從我的服務器解析我的數據。我只是想添加一個按鈕到我的列表視圖。 –

+0

是啊因爲你採取錯誤的方向,解析類應該帶有參考列表視圖,爲什麼你不把按鈕放在你的主要活動 –

+0

我解決了我自己的問題。我如何標記我的問題已回答? –