2017-03-15 6 views
0

タンクレベルを表示するためにmysqlデータベーステーブルにアクセスしています。画像ビューに値を表示する必要があります。レベルを変更する矩形の高さを変更する必要があります。どのようにそれはアンドロイドで可能です。下のコードコンテナ1とコンテナ2は、レベルデータを格納する変数です。このデータにアクセスし、画像の高さを変更する方法ビュー。Android:受け取ったjsonデータに応じて画像ビューの高さを動的に変更

package com.example.tg.mysmartcontainer;

import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.ActionBarActivity;インポート android.widget.ListAdapter; import android.widget.ListView;インポート android.widget.SimpleAdapter; import android.os.Handler;インポート org.apache.http.HttpEntity;インポートorg.apache.http.HttpResponse; import org.apache.http.client.methods.HttpPost;インポート org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.BasicHttpParams; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject;

import java.io.BufferedReader; import java.io.InputStream;インポート java.io.InputStreamReader; import java.util.ArrayList;インポート java.util.HashMap;

パブリッククラスMainActivityがActionBarActivity {

String myJSON; 
Handler mHandler; 
private static final String TAG_RESULTS = "result"; 
private static final String TAG_timeStamp = "timeStamp"; 
private static final String TAG_container1 = "container1"; 
private static final String TAG_container2 = "container2"; 

JSONArray container = null; 

ArrayList<HashMap<String, String>> ContainerList; 

ListView list; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 
    list = (ListView) findViewById(R.id.listView); 
    ContainerList = new ArrayList<HashMap<String, String>>(); 
    final Handler handler = new Handler(); 
    Runnable refresh = new Runnable() { 
     @Override 
     public void run() { 
      getData(); 
      handler.postDelayed(this, 0); 
     } 
    }; 
    handler.postDelayed(refresh, 0); 
    //getData(); 
} 


public void getData() { 
    class GetDataJSON extends AsyncTask<String, Void, String> { 

     @Override 
     protected String doInBackground(String... params) { 
      DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams()); 
      HttpPost httppost = new HttpPost("http://smartgrocer.000webhostapp.com/get_data.php"); 

      // Depends on your web service 
      httppost.setHeader("Content-type", "application/json"); 

      InputStream inputStream = null; 
      String result = null; 
      try { 
       HttpResponse response = httpclient.execute(httppost); 
       HttpEntity entity = response.getEntity(); 

       inputStream = entity.getContent(); 
       // json is UTF-8 by default 
       BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8); 
       StringBuilder sb = new StringBuilder(); 

       String line = null; 
       while ((line = reader.readLine()) != null) { 
        sb.append(line + "\n"); 
       } 
       result = sb.toString(); 
      } catch (Exception e) { 
       // Oops 
      } finally { 
       try { 
        if (inputStream != null) inputStream.close(); 
       } catch (Exception squish) { 
       } 
      } 
      return result; 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      myJSON = result; 
      showList(); 

     } 
    } 
    GetDataJSON g = new GetDataJSON(); 
    g.execute(); 
} 

protected void showList() { 
    try { 
     JSONObject jsonObj = new JSONObject(myJSON); 
     container = jsonObj.getJSONArray(TAG_RESULTS); 
     if(ContainerList!=null&&ContainerList.size()>0) 
      ContainerList.clear(); 

     for (int i = 0; i < container.length(); i++) { 
      JSONObject c = container.getJSONObject(i); 
      String timeStamp = c.getString(TAG_timeStamp); 
      String container1 = c.getString(TAG_container1); 
      String container2 = c.getString(TAG_container2); 

      HashMap<String, String> container = new HashMap<String, String>(); 

      container.put(TAG_timeStamp, timeStamp); 
      container.put(TAG_container1, container1); 
      container.put(TAG_container2, container2); 

      ContainerList.add(container); 
     } 

     ListAdapter adapter = new SimpleAdapter(
       MainActivity.this, ContainerList, R.layout.list_item, 
       new String[]{TAG_timeStamp, TAG_container1, TAG_container2}, 
       new int[]{R.id.timeStamp, R.id.container1, R.id.container2} 
     ); 

     list.setAdapter(adapter); 


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

} 

}

+0

はい、それは可能ですが、我々は –

+0

が –

答えて

0

変更電流値に応じImageViewの高さに延び:ImageViewの高さを設定する

tankImageView.setHeight((int)(currentValue/maxValue)); 
1

を:

image_view.getLayoutParams().height = 20; 

これが役に立ちます。

重要。レイアウトがすでに「レイアウト」された後、あなたが高さを設定している場合は、必ずあなたも呼び出します

image_view.requestLayout() 
+0

下記の私の答えを確認することができますので、いくつかのコードを提供してください私はそれを設定するjsonデータreceived.howに従って高さを変更したいと思った。 – tiji

+0

あなたのimageview @ tiji –

+0

のあなたのアダプターでそれを設定します。あなたは私のコードnで編集してください。私を見せてください。私はちょうどアンドロイドで初心者です。 – tiji

関連する問題