2016-11-17 12 views
0

"statusspp"の結果がSPP、カラーテキストビューが赤色、 "statusspp"の結果がSP2Dの場合、Json結果に基づいて変更カラーテキストビューを作成したいカラーのテキストビューは緑色になります。ここで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を大文字と小文字の値を設定したいと思っていますが、あなたのコードでは、どのtextviewとどこでこのアクションを実行したいのかは完全にはっきりしていません。 – Ak9637

0

リストビューonItemClickListener前に、あなたのTextViewを初期化し、

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} 

ノートの、textColorを変更するにはSETTEXTCOLORメソッドを使用しますいけない。このString statusspp = ((TextView) view.findViewById(R.id.latitude)).getText().toString();のように初期化するあなたは文句を言わない私は配置する必要があり、コード

+0

私はそれをクリックしなければならないときにのみ、背景色が変わっています。 –

+0

次に、アイテムのクリックリスナーの外にtextviewsを初期化し、アイテムのクリックリスナー内の上記のコードを移動します – SaravInfern

+0

申し訳ありません、私はアイテムのクリックリスナの外でtextviewsを初期化する方法を理解していません。私は少しの例を教えてくれますか? –

関連する問題