2016-11-17 1 views
0

Я просто хочу изменить цветное текстовое представление на основе результата Json, например, если результатом «statusspp» является SPP, цветное текстовое изображение RED и когда результатом «statusspp» является SP2D , тогда текстовое изображение цвета будет ЗЕЛЕНЫМ.Как изменить цветное текстовое представление на основе результата Json

Вот мой код:

package com.example.rizki.sp2dsearch; 

import android.graphics.Color; 
import android.os.Bundle; 

import java.util.ArrayList; 
import java.util.HashMap; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.ListActivity; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.EditText; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import android.widget.TextView; 
import android.widget.Toast; 

import static com.example.rizki.sp2dsearch.R.id.text; 
import static com.example.rizki.sp2dsearch.R.id.textLat; 

public class Search extends ListActivity { 
    EditText editSearch; 
    private static final String TAG_TOILETS = "toilets"; 
    private static final String TAG_NPWP = "npwp"; 
    private static final String TAG_NOSPP = "nospp"; 
    //private static final String TAG_TYPE = "type"; 
    private static final String TAG_STATUSSPP = "statusspp"; 
    private static final String TAG_TGLSP2D = "tglsp2d"; 
    private static final String TAG_JUMLAH = "jumlahtotal"; 
    //web service milik saya, silakan pakai untuk latihan 
//url untuk melakukan get, parameter name saya kosongkan untuk nantinya diisi dengan keywords tertentu 
    private static String url= "http://ditkeu.unair.ac.id/andro/carisp2d.php?npwp="; 
    //urlget digunakan untuk url full yang dipanggil , url+keywords 
    private static String urlget= ""; 
    static boolean a=false; 
    JSONArray toilets = null; 
    //deklarasi progressdialog 
    ProgressDialog pDialog; 
    ArrayList<HashMap<String, String>> toiletList = new ArrayList<HashMap<String, String>>(); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_search); 
    } 
    public void searchtoi(View view) 
    { 
     editSearch = (EditText) findViewById(R.id.edit1); 
     //Mengambil keywords, dijadikan string 
     String src = editSearch.getText().toString(); 
     urlget=url+src; 
     //Log.e("a",urlget); 
     new JSONParse().execute(); 

    } 
    private class JSONParse extends AsyncTask<String, String, JSONObject> { 
     @Override 
     //Menampilkan progress dialog 
     protected void onPreExecute(){ 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(Search.this); 
      pDialog.setMessage("Tunggu ya ..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); 
      pDialog.show(); 
     } 
     @Override 
     protected JSONObject doInBackground(String... args) 
     { 
      //Membuat JSON Parser instance 
      JSONParser jParser = new JSONParser(); 

      //mengambil JSON String dari urlget, url+keywords 
      JSONObject json = jParser.getJSONFromUrl(urlget); 
      if(json==null) 
      { 
       a=false; 
      } 
      else a=true; 
      return json; 
     } 
     @Override 
     protected void onPostExecute(JSONObject json) { 
      if(a==true) 
      { 
       try{ 
        Log.e("status",a+""); 
        //mengambil array toilets 
        toilets = json.getJSONArray(TAG_TOILETS); 
        //loop pada toilets 
        for(int i=0; i<toilets.length();i++) 
        { 
         JSONObject a = toilets.getJSONObject(i); 
         //simpan di variable 
         String nospp = a.getString(TAG_NOSPP); 
         String npwp = a.getString(TAG_NPWP); 
         //String type = a.getString(TAG_TYPE); 
         String statusspp = a.getString(TAG_STATUSSPP); 
         String tglsp2d = a.getString(TAG_TGLSP2D); 
         String jumlahtotal = a.getString(TAG_JUMLAH); 
         Log.e("npwp",npwp); 

         //buat hashmap baru untuk store String 
         HashMap<String, String> map = new HashMap<String, String>(); 
         map.put(TAG_NOSPP, nospp); 
         map.put(TAG_NPWP, npwp); 
         map.put(TAG_STATUSSPP, statusspp); 
         map.put(TAG_TGLSP2D, tglsp2d); 
         map.put(TAG_JUMLAH, jumlahtotal); 
         toiletList.add(map); 
         //ProgressDialog dihilangkan jika sudah selesai mengambil data 
         pDialog.dismiss(); 
         tampilkandata(); 
        } 
       }catch(JSONException e) 
       { 
        e.printStackTrace(); 
       } 
      }else { 
       Toast.makeText(getApplicationContext(), "error getting data", Toast.LENGTH_SHORT).show(); 
       pDialog.dismiss(); 
       Log.e("status",a+"");} 
     } 
    } 
    public void tampilkandata() 
    { 

     //membuat ListView dari data JSON yang ada 
     ListAdapter adapter = new SimpleAdapter(this, toiletList, 
       R.layout.list_view, 
       new String[]{TAG_NPWP, TAG_STATUSSPP, TAG_TGLSP2D, TAG_JUMLAH}, new int[]{ 
       R.id.name,R.id.latitude, R.id.longitude,R.id.price}); 
     setListAdapter(adapter); 

     // selecting single ListView item 
     ListView lv=getListView(); 

     // Memberikan Event Click Listener pada List View 
     lv.setOnItemClickListener(new OnItemClickListener(){ 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
            int position, long id) { 
       //Mengambil nilai dari ListView yang di Click 
       String npwp = ((TextView) view.findViewById(R.id.name)).getText().toString(); 
       String statusspp = ((TextView) view.findViewById(R.id.latitude)).getText().toString(); 
       String tglsp2d = ((TextView) view.findViewById(R.id.longitude)).getText().toString(); 
       String jumlahtotal = ((TextView) view.findViewById(R.id.price)).getText().toString(); 

       //Membuat intent untuk menampilkan activity Detail 
       //Selain itu Intent ini juga digunakan untuk mengirimkan suatu data 
       Intent i = new Intent(getApplicationContext(), Detail.class); 
       //Memasukkan data yang akan dikirimkan melalui intent 
       i.putExtra(TAG_NPWP, npwp); 
       i.putExtra(TAG_STATUSSPP, statusspp); 
       i.putExtra(TAG_TGLSP2D, tglsp2d); 
       i.putExtra(TAG_JUMLAH, jumlahtotal); 
       startActivity(i); 
       //Menampilkan data dari ListView yang di Click dalam bentuk popup 
       //Toast.makeText(getApplicationContext(), "toilet "+name, Toast.LENGTH_SHORT).show(); 
      } 
     }); 

    } 

} 

ответ

1

когда у вас есть данные готовы вы можете просто использовать случаи переключения

switch(case){ 
 
    case SPP: 
 
    textview.setBackgroundResource(getResources().getColor(R.color.RED)) 
 
case SP2D: 
 
textview.setBackgroundResource(getResources().getColor(R.color.GREEN)) 
 
}

убедитесь, что вы определить ваши цвета в цвета xml первые

+0

, где я должен разместить этот код сэр? –

+0

, где бы вы ни хотели установить color.provided u имеет значения для случая, в вашем коде не совсем ясно, какое текстовое изображение и где вы хотите выполнить это действие. – Ak9637

0

Инициализировать ваш TextView перед тем ListView onItemClickListener и использовать метод SetTextColor изменить TextColor

пример

TextView text =(TextView) view.findViewById(R.id.latitude)); 
String statusspp = text.getText().toString(); 

if(statusspp.equals("SPP")){ 
    text.setTextColor(Color.RED); 
    text. setBackgroundColor(Color.RED);//to change background} 
else if(statusspp.equals("SP2D")){ 
    text.setTextColor(Color.GREEN); 
    text. setBackgroundColor(Color.GREEN);//to change background} 

Примечание: Не инициализировать как этот String statusspp = ((TextView) view.findViewById(R.id.latitude)).getText().toString(); вы не сможете использовать код

+0

его работа сэр .. но изменение цвета фона только тогда, когда я должен щелкнуть по нему. –

+0

Затем инициализируйте свои текстовые комментарии вне элемента click listener и переместите вышеуказанный код внутри элемента click listener – SaravInfern

+0

Извините, сэр, я не понимаю, как инициализировать текстовые просмотры вне элемента прослушивания элемента. Может, дайте мне небольшой пример сэр? –