2016-09-23 37 views
-1

这是我的类,这是我显示数据到列表适配器R.id.listView1所以我需要的是一个自定义适配器,新的android 和所有其他教程都不在我的联盟。 这只是我需要的社区小帮助,因为这对我有很大的帮助。ListView自定义适配器在Android中,只需通过传递阵列适配器来更改字体

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



    } 
} 
+0

,你面对的是什么问题? – AbhayBohra

+0

您可以为使用自定义文本视图的列表创建行布局。您的行中有 – anonymous

回答

1

Please see the screenshot你可以去基地适配器这种类型的需求,其中你可以有工具来修改了很多东西。要知道,实施基本适配器经过链接:

How to customize listview using baseadapter

http://abhiandroid.com/ui/baseadapter-tutorial-example.html

您可以轻松地定制底座适配器为您所需要的数据和字体。

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

主要活动

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

activity_item

<?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> 

activity_main

<?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> 
+0

: TextView tv =(TextView)view.findViewById(R.id.tv); 什么是R.id.tv应该指向我没有在我的XML文本视图,但一个列表视图可以ü只是改变为列表视图,然后应用字体? lisview的资源ID是:R.id.listView1,我如何使用Set TypeFace? – dummystreamer

+0

你必须创建一个单独的布局(activity_item),它将只包含一个文本视图(电视)。该布局将被加载到getView方法中的自定义适配器中。 从您的活动课程中加载数据库中的数据后,将该数组列表作为参数传递给CustumAdapter。 – Nishith

+0

我做了你所说的一切,但屏幕显示空白详细日志显示数据时,我显示,但视图没有。 \ – dummystreamer

相关问题