android中的Listview自定义适配器,仅通过传递数组适配器来更改字体
这是我的类,在这里我向列表适配器R.id.listView1显示数据,所以我只需要一个自定义适配器,我是android新手 所有其他的教程都不是我能胜任的。 这只是一个小的帮助,我需要从社区,因为这对我帮助很大android中的Listview自定义适配器,仅通过传递数组适配器来更改字体,android,Android,这是我的类,在这里我向列表适配器R.id.listView1显示数据,所以我只需要一个自定义适配器,我是android新手 所有其他的教程都不是我能胜任的。 这只是一个小的帮助,我需要从社区,因为这对我帮助很大 import android.content.Context; import android.content.res.AssetManager; import android.database.Cursor; import android.database.sqlite.SQLiteDa
import android.content.Context;
import android.content.res.AssetManager;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
public class View_Data extends AppCompatActivity {
public ArrayList<String> datax = new ArrayList<String>(); //used to store data from db
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_data);
final String LOG_TAG = View_Data.class.getSimpleName();
Typeface custom_font = Typeface.createFromAsset(getAssets(), "fonts/AABOHI.TTF"); // this is the custom font i want to use
try {
String table = "questions";
String[] columnsToReturn = {"question_id", "question", "def_font"};
SQLiteDatabase mydatabase = openOrCreateDatabase("Data",MODE_PRIVATE,null);
Typeface font = Typeface.createFromAsset(getAssets(), "fonts/AABOHI.TTF");
Cursor dbCursor = mydatabase.query(table, null,null, null, null, null, null);
dbCursor.moveToFirst();
String temp ;
int i = 0;
ListView listView1 = (ListView) findViewById(R.id.listView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, datax);
listView1.setAdapter(adapter);
while (!dbCursor.isAfterLast()) {
Log.v(LOG_TAG, String.valueOf(dbCursor.getString(0)));
Log.v(LOG_TAG, String.valueOf(dbCursor.getString(1)));
temp = " Question : " + String.valueOf(dbCursor.getString(1)) ;//This is what i want in a custom font
datax.add(temp);
dbCursor.moveToNext();
i++;
}
dbCursor.close();
for (String row : datax) {
Log.v(LOG_TAG, row);
}
} catch (Exception e) {
Log.v(LOG_TAG, e.toString());
}
ListView listView1 = (ListView) findViewById(R.id.listView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, datax);
listView1.setAdapter(adapter);
}
}
导入android.content.Context;
导入android.content.res.AssetManager;
导入android.database.Cursor;
导入android.database.sqlite.SQLiteDatabase;
导入android.graphics.Color;
导入android.graphics.Typeface;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.BaseAdapter;
导入android.widget.ImageView;
导入android.widget.ListView;
导入android.widget.TextView;
导入java.util.ArrayList;
公共类视图_数据扩展AppCompative活动{
public ArrayList datax=new ArrayList();//用于存储数据库中的数据
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.view\u数据);
最终字符串LOG_TAG=View_Data.class.getSimpleName();
Typeface custom_font=Typeface.createFromAsset(getAssets(),“fonts/AABOHI.TTF”);//这是我要使用的自定义字体
试一试{
String table=“问题”;
String[]columnsToReturn={“问题id”、“问题”、“定义字体”};
SQLiteDatabase mydatabase=openOrCreateDatabase(“数据”,MODE_PRIVATE,null);
Typeface font=Typeface.createFromAsset(getAssets(),“font/AABOHI.TTF”);
Cursor dbCursor=mydatabase.query(表,null,null,null,null,null);
dbCursor.moveToFirst();
字符串温度;
int i=0;
ListView listView1=(ListView)findViewById(R.id.listView1);
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple_list_item_1,datax);
listView1.setAdapter(适配器);
而(!dbCursor.isAfterLast()){
Log.v(Log_标记,String.valueOf(dbCursor.getString(0));
Log.v(Log_标记,String.valueOf(dbCursor.getString(1)));
temp=“Question:”+String.valueOf(dbCursor.getString(1));//这是我想要的自定义字体
添加数据(温度);
dbCursor.moveToNext();
i++;
}
dbCursor.close();
for(字符串行:datax){
Log.v(日志标签,行);
}
}捕获(例外e){
Log.v(Log_标记,例如toString());
}
ListView listView1=(ListView)findViewById(R.id.listView1);
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple_list_item_1,datax);
listView1.setAdapter(适配器);
}
}
对于这种类型的需求,您可以选择基本适配器,这样您就可以方便地修改许多内容。要了解并实现基本适配器,请浏览以下链接:
您可以轻松地为所需的数据和字体自定义基本适配器
Create a base adapter as below :
public class CustomAdapter extends BaseAdapter {
Context context;
ArrayList<String> arrayList;
LayoutInflater inflter;
Typeface font;
public CustomAdapter(Context applicationContext, ArrayList<String> arrayList) {
this.context = applicationContext;
this.arrayList = arrayList;
inflter = (LayoutInflater.from(applicationContext));
font = Typeface.createFromAsset(context.getAssets(), "fonts/Questrial-Regular.ttf");
}
@Override
public int getCount() {
return arrayList.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
view = inflter.inflate(R.layout.activity_item, null);
TextView tv = (TextView) view.findViewById(R.id.tv);
tv.setText(arrayList.get(i));
tv.setTypeface(font);
return view;
}
}
创建一个基本适配器,如下所示:
公共类CustomAdapter扩展了BaseAdapter{
语境;
ArrayList ArrayList;
更平坦的过滤器;
字体;
公共CustomAdapter(上下文应用程序上下文,ArrayList ArrayList){
this.context=applicationContext;
this.arrayList=arrayList;
inflter=(LayoutInflater.from(applicationContext));
font=Typeface.createFromAsset(context.getAssets(),“font/Questrial Regular.ttf”);
}
@凌驾
public int getCount(){
返回arrayList.size();
}
@凌驾
公共对象getItem(int i){
返回null;
}
@凌驾
公共长getItemId(int i){
返回0;
}
@凌驾
公共视图getView(int i、视图视图、视图组视图组){
视图=过滤器充气(R.layout.activity\u项,空);
TextView tv=(TextView)view.findViewById(R.id.tv);
tv.setText(arrayList.get(i));
设置字体(字体);
返回视图;
}
}
主要活动
public class MainActivity extends AppCompatActivity {
ArrayList<String> simpleStringArrayList;
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
simpleStringArrayList = new ArrayList<>();
simpleStringArrayList.add("aaa");
simpleStringArrayList.add("bbb");
simpleStringArrayList.add("ccc");
simpleStringArrayList.add("ddd");
simpleStringArrayList.add("eee");
simpleStringArrayList.add("fff");
simpleStringArrayList.add("ggg");
listView = (ListView) findViewById(R.id.listView);
listView= (ListView) findViewById(R.id.listView);
CustomAdapter customAdapter = new CustomAdapter(this, simpleStringArrayList);
listView.setAdapter(customAdapter);
}
}
public类MainActivity扩展了AppCompatActivity{
ArrayList simpleStringArrayList;
列表视图列表视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
simpleStringArrayList=新ArrayList();
simpleStringArrayList.添加(“aaa”);
simpleStringArrayList.add(“bbb”);
simpleStringArrayList.添加(“ccc”);
simpleStringArrayList.add(“ddd”);
simpleStringArrayList.添加(“eee”);
simpleStringArrayList.add(“fff”);
simpleStringArrayList.add(“ggg”);
listView=(listView)findViewById(R.id.listView);
listView=(listView)findViewById(R.id.listView);
CustomAdapter CustomAdapter=新的CustomAdapter(这是simpleStringArrayList);
setAdapter(customAdapter);
}
}
活动项目
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
主要活动
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.dell1.myapplication.MainActivity">
<ListView
android:id="@+id/listView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>
您面临什么问题?您可以为使用自定义文本视图的列表创建行布局。在您的行中:TextView tv=(TextView)view.findViewById(R.id.tv);R.id.tv应该指向什么?我的xml中没有文本视图,但是listview。你可以只更改为listview,然后应用字体吗?lisview的资源id为:R.id.listView1,如何使用设置字体?您必须创建一个单独的布局(活动\项),其中仅包含文本视图(tv)。此布局将加载到getView方法中的自定义适配器中。从活动类加载arraylist和databa中的数据后