2014-11-21 3 views
0

그래서 여기 많은 해결책을 Stackoverflow에서 시도했지만 그 방법을 결코 알 수는 없습니다. 나는 약간의 초보자입니다. 그래서 ListView 있고 글꼴을 변경하려면. 여기 내 ListView에ListView의 글꼴 색 변경하기

내가 글꼴을 변경하는 어떤 종류의 어댑터를 필요로하는 솔루션을 알고
package qax.khabaralyoum; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import android.annotation.TargetApi; 
import android.app.AlertDialog; 
import android.app.ListActivity; 
import android.content.Intent; 
import android.graphics.drawable.ColorDrawable; 
import android.net.Uri; 
import android.os.AsyncTask; 
import android.os.Build; 
import android.os.Bundle; 
import android.text.Html; 
import android.util.Log; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.StatusLine; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 
import android.content.Context; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.view.View; 
import android.view.Window; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.ProgressBar; 
import android.widget.SimpleAdapter; 
import android.widget.TextView; 
import android.widget.Toast; 
import uk.co.senab.actionbarpulltorefresh.library.ActionBarPullToRefresh; 
import uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout; 
import uk.co.senab.actionbarpulltorefresh.library.listeners.OnRefreshListener; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.app.Fragment; 
import android.app.ListFragment; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 

public class MainListActivity extends ListActivity { 

    public static final int NUMBER_OF_POSTS = 20; 
    public static final String TAG = MainListActivity.class.getSimpleName(); 
    protected JSONObject mBlogData; 
    protected ProgressBar mProgressBar; 
    private final String KEY_TITLE = "title"; 
    private final String KEY_AUTHOR = "author"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getWindow().requestFeature(Window.FEATURE_ACTION_BAR); 
     getActionBar().hide(); 
     setContentView(R.layout.activity_main_list); 

     mProgressBar = (ProgressBar) findViewById(R.id.progressBar); 

     if (isNetworkAvailable()) { 
      mProgressBar.setVisibility(View.VISIBLE); 

      GetBlogPostsTask getBlogPostsTask = new GetBlogPostsTask(); 
      getBlogPostsTask.execute(); 
     } else { 
      Toast.makeText(this, "Network is unavailable!", Toast.LENGTH_LONG).show(); 
     } 

     //Toast.makeText(this, getString(R.string.no_items), Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 

     try { 
      JSONArray jsonPosts = mBlogData.getJSONArray("posts"); 
      JSONObject jsonPost = jsonPosts.getJSONObject(position); 
      String blogUrl = jsonPost.getString("url"); 

      Intent intent 
        = new Intent(this, BlogWebViewActivity.class); 
      intent.setData(Uri.parse(blogUrl)); 
      startActivity(intent); 
     } catch (JSONException e) { 
      logException(e); 
     } 
    } 

    private void logException(Exception e) { 
     logException(e); 
    } 

    private boolean isNetworkAvailable() { 
     ConnectivityManager manager = (ConnectivityManager) 
       getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo networkInfo = manager.getActiveNetworkInfo(); 

     boolean isAvailable = false; 
     if (networkInfo != null && networkInfo.isConnected()) { 
      isAvailable = true; 
     } 

     return isAvailable; 
    } 

    private void handleBlogResponse() { 
     mProgressBar.setVisibility(View.INVISIBLE); 

     if (mBlogData == null) { 
      updateDisplayError(); 

     } else { 

      try { 
       JSONArray jsonPosts = mBlogData.getJSONArray("posts"); 
       ArrayList<HashMap<String, String>> blogPosts = 
         new ArrayList<HashMap<String, String>>(); 
       for (int i = 0; i < jsonPosts.length(); i++) { 
        JSONObject post = jsonPosts.getJSONObject(i); 
        String title = post.getString(KEY_TITLE); 
        title = Html.fromHtml(title).toString(); 

        HashMap<String, String> blogPost = new HashMap<String, String>(); 
        blogPost.put(KEY_TITLE, title); 

        blogPosts.add(blogPost); 

       } 

       String[] keys = {KEY_TITLE}; 
       int[] ids = {android.R.id.text1}; 
       SimpleAdapter adapter = new SimpleAdapter(this, blogPosts, android.R.layout.simple_list_item_1, keys, ids); 
       setListAdapter(adapter); 

      } catch (JSONException e) { 
       logException(e); 
      } 
     } 

    } 

    private void updateDisplayError() { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle(getString(R.string.error_title)); 
     builder.setMessage(getString(R.string.error_message)); 
     builder.setPositiveButton(android.R.string.ok, null); 
     AlertDialog dialog = builder.create(); 
     dialog.show(); 

     TextView emptyTextView = (TextView) getListView().getEmptyView(); 
     emptyTextView.setText(getString(R.string.no_items)); 

    } 

    private class GetBlogPostsTask extends AsyncTask<Object, Void, JSONObject> { 

     @Override 
     protected JSONObject doInBackground(Object... params) { 
      int responseCode = -1; 
      JSONObject jsonResponse = null; 
      StringBuilder builder = new StringBuilder(); 
      HttpClient client = new DefaultHttpClient(); 
      HttpGet httpget = new HttpGet("http://idoodling.com/api/get_recent_posts/"); 

      try { 
       HttpResponse response = client.execute(httpget); 
       StatusLine statusLine = response.getStatusLine(); 
       responseCode = statusLine.getStatusCode(); 

       if (responseCode == HttpURLConnection.HTTP_OK) { 
        HttpEntity entity = response.getEntity(); 
        InputStream content = entity.getContent(); 
        BufferedReader reader = new BufferedReader(new InputStreamReader(content)); 
        String line; 
        while ((line = reader.readLine()) != null) { 
         builder.append(line); 
        } 

        jsonResponse = new JSONObject(builder.toString()); 

       } else { 
        Log.i(TAG, String.format("Unsuccessful HTTP response code: %d", responseCode)); 
       } 
      } catch (MalformedURLException e) { 
       logException(e); 
      } catch (IOException e) { 
       logException(e); 
      } catch (Exception e) { 
       logException(e); 
      } 

      return jsonResponse; 
     } 

     @Override 
     protected void onPostExecute(JSONObject result) { 
      mBlogData = result; 
      handleBlogResponse(); 
     } 

    } 

    public void activity2(View view) { 
     Intent intent = new Intent(this, qax.khabaralyoum.BlogWebViewActivity.class); 
     startActivity(intent); 

    } 
} 

이 포함되어 내 자바 클래스입니다. 내 클래스에 Adapater가 있다고 생각하지만 글꼴 색을 변경하기 위해 XML에 연결할 수 있도록 편집하거나 추가해야합니까? 나는 내가 가지고있는 코드에 관해 그것을하기 위해 나를위한 스텝 가이드의 약간의 단계를 좋아할 것이다.

답변

3

게시물에서 언급했듯이 어댑터에서 글꼴 색을 설정해야합니다. 이렇게하려면 기본값 인 getView을 덮어 쓰고 TextView의 텍스트 색상을 설정하도록 변경해야합니다. 이렇게하려면

SimpleAdapter adapter = new SimpleAdapter(this, blogPosts, android.R.layout.simple_list_item_1, keys, ids); 

SimpleAdapter adapter = new SimpleAdapter(this, blogPosts, android.R.layout.simple_list_item_1, keys, ids){ 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View view = super.getView(position, convertView, parent); 
     TextView tv = (TextView) view.findViewById(android.R.id.text1); 
     tv.setTextColor(Color.RED); 

     return view; 

    }; 
}; 

에 당신은 당신이 원하는 색상으로 Color.RED을 변경해야합니다 변경합니다. 16 진수 색상 코드를 사용하는 경우 Color.parseColor("#FFFFFF")을 입력하고 #FFFFFF을 색상으로 바꿀 수 있습니다. Color 객체 가져 오기에 대한 자세한 정보가 필요하면 Color에 대한 Android 설명서 페이지를 참조하십시오. (페이지는 https://developer.android.com/reference/android/graphics/Color.html에서 찾을 수 있습니다.)

+0

고마워요. 그것은 완벽하게 작동했습니다! – qax