2014-01-08 37 views
0

我一直在尝试学习如何在Eclipse中使用“主/细节流”来开发Android应用程序。Android应用程序:默认模板中的自定义数组适配器,不适用于对象

我的问题是,我不明白如何创建我自己的ArrayAdapter(所以我可以改变每一行的颜色等等),几乎看起来相同,但将采取“LibHome.ITEMS”(一个对象?不是一个简单的数组

我真的不能明白如何使这项工作,我也不想盲目地适应另一种解决方案,而不是学习

setListAdapter(
     new ArrayAdapter<LibHome.GenItem>(
      getActivity(), 
      android.R.layout.simple_list_item_activated_1, 
      android.R.id.text1, 
      LibHome.ITEMS 
     ) 
    ); 

LibHome.java:。

package com.example.prac2.lib; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

public class LibHome { 

    /** 
    * Create an Array 
    */ 
    public static List<GenItem> ITEMS = new ArrayList<GenItem>(); 

    /** 
    * A map of sample (dummy) items, by ID. 
    */ 
    public static Map<String, GenItem> ITEM_MAP = new HashMap<String, GenItem>(); 

    /** 
    * Add Items to the array 
    */ 
    static { 
     // Items! 
     addItem(new GenItem("1", "Title1", "File1")); 
     addItem(new GenItem("2", "Title2", "File2")); 
     addItem(new GenItem("2", "Title3", "File3")); 

    private static void addItem(GenItem item) { 
     ITEMS.add(item); 
     ITEM_MAP.put(item.id, item); 
    } 

    /** 
    * A dummy item representing a piece of content. 
    */ 
    public static class GenItem { 
     public String id; 
     public String content; 
     public String file; 

     public GenItem(String id, String content, String file) { 
      this.id = id; 
      this.content = content; 
      this.file = file; 
     } 

     @Override 
     public String toString() { 
      return content; 
     } 
    } 

} 
+0

http://stackoverflow.com/questions/20611123/listview-subobject-clicka BLE-confilct。检查它是否有帮助 – Raghunandan

回答

2

为了达到这个目的,您需要创建一个自定义Adapter类,该类需要LibHome项目。要做到这一点,你会做这样的事情,

public class LibAdapter extends ArrayAdapter<LibHome> { 
public LibAdapter(Context context, int textViewResourceId, ArrayList<LibHome> objects) { 
    super(context, textViewResourceId, objects); 
    this.objects = objects; 
} 


public View getView(int position, View convertView, ViewGroup parent){ 
      //Here is where you would change the colors of the text. 
      return v; 

} 

}

有几个很好的教程在那里,这将帮助你..这里有一些..

相关问题