2011-06-06 15 views
3

リストビューの書体を変更する方法を教えてもらえますかarial私はそれを理解することができません。続きandroidのカスタム書体SimpleAdapterを使ったListView

は私のコードです:

public class TopNewsActivity extends ListActivity { 

public static final String LOG_TAG = "Infra"; 
private ProgressDialog progressDialog; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.listplaceholder); 
    new BackgroundAsyncTask().execute(); 
} 

public class BackgroundAsyncTask extends AsyncTask<String, Integer, ArrayList<HashMap<String, String>>> { 

    @Override 
    protected void onPreExecute() { 
     progressDialog = new ProgressDialog(TopNewsGroup.group); 
     progressDialog.setCancelable(true); 
     progressDialog.setMessage("Loading..."); 
     progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
     progressDialog.setProgress(0); 
     progressDialog.show(); 
    } 

    @Override 
    protected ArrayList<HashMap<String, String>> doInBackground(String... paths) { 

     ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>(); 

     String xml = XMLfunctions.getTopNewsXML(); 
     Document doc = XMLfunctions.XMLfromString(xml); 

     int numResults = XMLfunctions.numResults(doc); 
     Log.d(LOG_TAG, "Number of Results: " + numResults); 
     if ((numResults <= 0)) { 
      Toast.makeText(TopNewsActivity.this, "No Result Found",Toast.LENGTH_LONG).show(); 
      return null; 
     } 

     NodeList nodes = doc.getElementsByTagName("result"); 

     for (int i = 0; i < nodes.getLength(); i++) { 
      HashMap<String, String> map = new HashMap<String, String>(); 

      Element e = (Element) nodes.item(i); 
      map.put("id", XMLfunctions.getValue(e, "id")); 
      map.put("title", XMLfunctions.getValue(e, "title")); 
      map.put("date", XMLfunctions.getValue(e, "date")); 
      map.put("recordDate", XMLfunctions.getValue(e, "recordDate")); 
      mylist.add(map); 
     } 
     return mylist; 
    } 

    @Override 
    protected void onProgressUpdate(Integer... values) { 
     super.onProgressUpdate(values); 
    } 

    protected void onPostExecute(ArrayList<HashMap<String, String>> result) { 

     ListAdapter adapter = new MySimpleAdapter(TopNewsActivity.this, result, R.layout.list_item, new String[] { "title", "date" }, new int[] { R.id.item_title, R.id.item_subtitle }); 
     setListAdapter(adapter); 
     progressDialog.dismiss(); 

     final ListView lv = getListView(); 

     lv.setTextFilterEnabled(true); 
     lv.setOnItemClickListener(new OnItemClickListener() { 
      @SuppressWarnings("unchecked") 
      @Override 
      public void onItemClick(AdapterView<?> a, View view, final int position, long id) { 

       HashMap<String, String> o = (HashMap<String, String>) lv.getItemAtPosition(position); 

       Intent i = new Intent(TopNewsActivity.this, NewsDetails.class); 
       i.putExtra("content_id", o.get("id")); 
       i.putExtra("title", o.get("title")); 
       i.putExtra("date", o.get("recordDate")); 
       i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

       View v = TopNewsGroup.group.getLocalActivityManager().startActivity("ShowNews", i).getDecorView(); 

       // Again, replace the view 
       TopNewsGroup.group.replaceView(v); 
      } 
     }); 
    } 
} 

public class MySimpleAdapter extends SimpleAdapter { 
    public MySimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) { 
     super(context, data, resource, from, to); 
    } 

    @Override 
    public View getView(int position, View view, ViewGroup parent){ 

     LayoutInflater inflater = getLayoutInflater(); 
     Typeface localTypeface1 = Typeface.createFromAsset(getAssets(), "fonts/arial.ttf"); 
     View v = super.getView(position, view, parent); 
     ((TextView)v).setTypeface(localTypeface1); 
     return v; 


    } 
} 

} 

答えて

7

はそれ だこと

public class MySimpleAdapter extends SimpleAdapter { 

    private ArrayList<HashMap<String, String>> results; 

    public MySimpleAdapter(Context context, ArrayList<HashMap<String, String>> data, int resource, String[] from, int[] to) { 
     super(context, data, resource, from, to); 
     this.results = data; 
    } 

    public View getView(int position, View view, ViewGroup parent){ 

     Typeface localTypeface1 = Typeface.createFromAsset(getAssets(), "fonts/arial.ttf"); 
     View v = view; 
     if (v == null) { 
      LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = vi.inflate(R.layout.list_item, null); 
     } 
     TextView tt = (TextView) v.findViewById(R.id.item_title); 
     tt.setText(results.get(position).get("title")); 
     tt.setTypeface(localTypeface1); 
     TextView bt = (TextView) v.findViewById(R.id.item_subtitle); 
     bt.setText(results.get(position).get("date")); 
     bt.setTypeface(localTypeface1); 
     return v; 
    } 
} 

十分な単純なものでした:)

0

あなたが作成したくない場合は助けてください新しいクラスを使用すると、SimpleAdの作成時にgetViewメソッドをオーバーライドできます私の答えを似たような質問で参照してください。

Custon Typeface in listview with SimpleAdapter