2014-12-22 54 views
-2

Mainactivity:如何在網格視圖android中安排基於索引的圖像?

 public class MainActivity extends Activity { 
    GridView grid; 
    RelativeLayout r1; 
    int maxrows, maxcol; 
    ArrayList<LayoutData> data = new ArrayList<LayoutData>(); 
    ArrayList<HashMap<String, String>> sheetdetails = new ArrayList<HashMap<String, String>>(); 

       @Override 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     grid=(GridView)findViewById(R.id.gridview); 

     new GetRoute().execute("http://sb2.reloadit.in/TravelServices.asmx/Getlayout"); 

     } 

    private  class GetRoute extends AsyncTask<String, Void, JSONObject> { 
      /*String mJourneyDate; 
      public GetData(String pJourneyDate) { 
       this.mJourneyDate = pJourneyDate; 
      }*/ProgressDialog pd = null; 
       @Override 
       protected void onPreExecute() { 
        super.onPreExecute(); 

        pd = ProgressDialog.show(MainActivity.this, "", "Loading...", true); 
       } 

       @Override 
       protected JSONObject doInBackground(String... params) { 
        String response; 

        try { 
         HttpClient httpclient = new DefaultHttpClient(); 
         HttpPost httppost = new HttpPost(params[0]); 
         List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2); 
         nameValuePair.add(new BasicNameValuePair("RouteScheduleID","4798657")); 

         nameValuePair.add(new BasicNameValuePair("JourneyDate","2014-12-20")); 


         httppost.setEntity(new UrlEncodedFormEntity(nameValuePair)); 
         HttpResponse responce = httpclient.execute(httppost); 

         HttpEntity httpEntity = responce.getEntity(); 

         response = EntityUtils.toString(httpEntity); 
         Log.d("response is", response); 

         return new JSONObject(response); 

        } catch (Exception ex) { 

         ex.printStackTrace(); 

        } 

        return null; 
       } 

       @Override 
       protected void onPostExecute(JSONObject result) 
       { 
        super.onPostExecute(result); 
        //Log.v("TAG_RESULTadapter",""+result); 

        pd.dismiss(); 
        if(result != null) 
        { 
         try 
         { 


          JSONObject jobj = result.getJSONObject("Response"); 
          String message = jobj.getString("Message"); 
          String issuceess = jobj.getString("IsSuccess"); 

          if(issuceess.equals("true")) 
          { 

           JSONObject layout = result.getJSONObject("Layout"); 
           // Log.v("TAG_routearray",""+layoutarray); 
            maxrows=layout.getInt("MaxRows"); 

            maxcol=layout.getInt("MaxColumns"); 
            grid.setNumColumns(maxcol); 


            JSONArray routearray = layout.getJSONArray("SeatDetails"); 
            for (int i = 0; i < routearray.length(); i++) { 

            String Row = routearray.getJSONObject(i).getString("Row"); 
           // Log.v("TAG_routearray",""+Row); 
            String Col = routearray.getJSONObject(i).getString("Col"); 
            String Height = routearray.getJSONObject(i).getString("Height"); 
            String Width = routearray.getJSONObject(i).getString("Width"); 
            String SeatNo = routearray.getJSONObject(i).getString("SeatNo"); 
            String Gender = routearray.getJSONObject(i).getString("Gender"); 

             String Deck = routearray.getJSONObject(i).getString("Deck"); 
             String IsAvailable = routearray.getJSONObject(i).getString("IsAvailable"); 
             String Fare = routearray.getJSONObject(i).getString("Fare"); 



            Log.v("TAG_Maxfare",""+Fare); 
            HashMap<String, String> map = new HashMap<String, String>(); 
            map.put("Row", Row); 
            map.put("Col", Col); 
            map.put("Height", Height); 
            map.put("Width", Width); 
            map.put("SeatNo", SeatNo); 
            map.put("Deck", Deck); 
            map.put("IsAvailable", IsAvailable); 
            map.put("Gender", Gender); 
            if(Height.equalsIgnoreCase("1")&& Width.equalsIgnoreCase("1")) { 
            if(SeatNo.equalsIgnoreCase("")&& IsAvailable.equalsIgnoreCase("false")){ 
             map.put("seat_img", ""+R.drawable.noseat); 
             } 
            else{ 
              if(IsAvailable.equalsIgnoreCase("false")&&SeatNo!= ""){ 
               map.put("seat_img", ""+R.drawable.seatgreen); 
              } 
              if(IsAvailable.equalsIgnoreCase("false")&&SeatNo!= ""&& Gender.equalsIgnoreCase("F")){ 
               map.put("seat_img", ""+R.drawable.women); 
              } 
              if(SeatNo== ""&& Gender.equalsIgnoreCase("M")){ 
               map.put("seat_img", ""+R.drawable.noseat); 
              } 

             /* if(IsAvailable.equalsIgnoreCase("false")){ 
               map.put("seat_img", ""+R.drawable.seatgreen); 
              }*/else if(IsAvailable.equalsIgnoreCase("true")){ 
               map.put("seat_img", ""+R.drawable.seat); 
              } 
             } 
            } 
            map.put("Fare", Fare); 
            sheetdetails.add(map); 

            } 
            CustomGrid adapter = new CustomGrid(MainActivity.this, sheetdetails); 
            grid.setAdapter(adapter); 


          } 
         } 


         catch (Exception e) 
         { 
          e.printStackTrace(); 
         } 
        } 
        else 
        { 
         Toast.makeText(MainActivity.this, "Network Problem", Toast.LENGTH_LONG).show(); 
        } 
       } 
} 
} 

適配器類:

public class CustomGrid extends BaseAdapter{ 
    private Context mContext; 
    ArrayList<HashMap<String, String>> sheetdetails = new ArrayList<HashMap<String, String>>(); 
    public CustomGrid(Context c,ArrayList<HashMap<String, String>> sheetdetails) { 
     mContext = c; 
     this.sheetdetails= sheetdetails; 
    }@Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return sheetdetails.size(); 
    }@Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return sheetdetails.get(position); 
    } 
    @Override 
    public long getItemId(int arg0) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     View grid; 
     LayoutInflater inflater = (LayoutInflater) mContext 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     if (convertView == null) { 
      grid = new View(mContext); 
      grid = inflater.inflate(R.layout.row_grid, null); 

      ImageView imageView = (ImageView) grid.findViewById(R.id.grid_image); 

      HashMap<String, String> map = sheetdetails.get(position); 
     String gg =map.get("Gender"); 
      Log.v("TAG_UUUUU",""+gg); 
      imageView.setImageResource(Integer.valueOf(map.get("seat_img"))); 


     } else { 
      grid = (View) convertView; 
     } 

     return grid; 
    } 
    } 

Json: 

    "Layout": { 
     "ExtensionData": {}, 
     "MaxRows": 13, 
     "MaxColumns": 5, 
     "SeatDetails": [ 
      { 
       "ExtensionData": {}, 
       "Row": 0, 
       "Col": 1, 
       "Height": 1, 
       "Width": 1, 
       "SeatNo": "48", 
       "Gender": "", 
       "IsAisle": false, 
       "Deck": 1, 
       "IsAC": true, 
       "IsSleeper": false, 
       "IsAvailable": true, 
       "Fare": 1400, 
       "ChildFare": 0, 
       "InfantFare": 0 
      }, 
      { 
       "ExtensionData": {}, 
       "Row": 0, 
       "Col": 2, 
       "Height": 1, 
       "Width": 1, 
       "SeatNo": "", 
       "Gender": "M", 
       "IsAisle": true, 
       "Deck": 1, 
       "IsAC": true, 
       "IsSleeper": false, 
       "IsAvailable": false, 
       "Fare": 0, 
       "ChildFare": 0, 
       "InfantFare": 0 
      }, 

這是我的JSON。每次從json我得到max-col,max row。

從json動態創建一個最大列和最大列的網格視圖。

之後,基於來自json的行和列索引,我需要將網格中的圖像。

例如,如果[0,0]索引不存在,則離開該網格。如果[0,2]索引存在網格中的圖像。

從3天我試圖知道索引網格,但我沒有得到任何東西。請幫幫我。

+0

分享您的適配器代碼 –

+0

第3次您提出同樣的問題 –

+0

是digvesh。我沒有得到任何解決方案這個 –

回答

0
imageView.setImageResource(Integer.valueOf(map.get("seat_img"))); 

您應該從條件語句中執行此操作。因此,即使轉換視圖不爲空時它也會更改。

+0

我沒有得到你。現在我想知道網格的索引。 –

+0

你是什麼意思「我想知道網格的索引。」? –

+0

Abhishek ....看到我的json。首先數據是第0行和第1列,所以我需要在[0,1]索引中放置圖像。所以我會顯示[0,0]索引爲空字段(無圖像),所以每次我需要檢查行和列索引並放置圖像。 –