定制适配器实现

时间:2014-01-21 18:02:44

标签: android adapter

我有一个问题,目前我正在使用CursorTreeAdapter但是我想改变它以使用任何其他数据而不仅仅是游标,但说实话我不知道我该怎么做,我认为实现一些其他适配器然后覆盖需要的方法?但有人能告诉我某种方式吗?我现在很困惑,不知道我应该去哪个方向。 谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您可以扩展的抽象类:BaseAdapter ArrayAdapter

答案 1 :(得分:0)

你可以看到这个例子:

public class FeedAdapter extends BaseAdapter {
    private ArrayList<FeedItem> items;
    private LayoutInflater layoutInflater;

    FeedAdapter(Context context, ArrayList<FeedItem> list, int bgColor){
        items = list;
        layoutInflater = LayoutInflater.from(context);
    }


    @Override
    public int getCount() {
        return items.size();
    }


    @Override
    public FeedItem getItem(int index) {
        return items.get(index);
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }   

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row;

        if (null == convertView) {
                    row = layoutInflater.inflate(R.layout.romanblack_feed_item, null);
        } else {
            row = convertView;
        }

        TextView title = (TextView) row.findViewById(R.id.romanblack_rss_title);
        TextView pubdate = (TextView) row.findViewById(R.id.romanblack_rss_pubdate);

                String titleString = items.get(position).getTitle();
                title.setText(titleString);

                if(items.get(position).getTextColor() != Color.TRANSPARENT){
            title.setTextColor(items.get(position).getTextColor());
                }else{
                    title.setTextColor(Color.DKGRAY);
                }

        pubdate.setText(items.get(position).getPubdate());

        return row;
    }

}

和布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/romanblack_feed_item"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:background="#FFF">

    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:background="@drawable/romanblack_rss_bg_feed" 
      android:orientation="vertical">
        <TextView 
            android:text="Title" 
            android:id="@+id/romanblack_rss_title" 
            android:textSize="14sp"             
            android:textColor="#222"
            android:layout_margin="5dp"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" />
        <TextView 
            android:text="2011-01-01" 
            android:id="@+id/romanblack_rss_pubdate" 
            android:textSize="10sp"             
            android:textColor="#666"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" />
    </LinearLayout> 
</LinearLayout>