gpt4 book ai didi

android - 使用 SimpleAdapter 在 Android ListView 中自定义字体

转载 作者:太空宇宙 更新时间:2023-11-03 12:24:22 25 4
gpt4 key购买 nike

谁能告诉我如何将 ListView 的字体更改为 arial 我无法弄清楚。

以下是我的代码:

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;


}
}

}

请帮忙

最佳答案

很简单

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;
}
}

就是这样:)

关于android - 使用 SimpleAdapter 在 Android ListView 中自定义字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6249966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com