2016-09-23 39 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

相關問題